home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / docs / misc / amigafaq940927.lha / AmigaFAQ / AmigaFAQ.doc next >
Encoding:
Text File  |  1994-09-27  |  110.1 KB  |  2,565 lines

  1.   Amiga-FAQ
  2.   *********
  3.   
  4.      This document lists some frequently asked questions and trys to give
  5.   answers.  Is intention is to help new users and to reduce the amount of
  6.   news that most experienced users don't like to read anymore.
  7.   
  8.      Please notice that there are many questions that aren't answered yet,
  9.   even more: Whole sections that remain empty! I feel that I cannot give
  10.   satisfying answers. So it's your turn: Fill the gaps and tell me what i
  11.   should include into this document!
  12.   
  13.  
  14.   Disclaimer
  15.  
  16.   1 CPU, Custom chips, RAM and other stuff
  17.     1 What are the 68EC020 and the 68EC030?
  18.     2 What's an FPU?
  19.     3 Can I use a 3.5" HD in my A1200?
  20.  
  21.   2 The Operating System
  22.     1 Can I use another Kickstart than the builtin?
  23.     2 What is the Amiga equivalent of . (Current directory)?
  24.     3 The PIPE: queue-handler
  25.       1 Using PIPE: in a standard AmigaShell environment
  26.       2 The Pipe command
  27.       3 Pipe command support in AmigaShell
  28.       4 Quick usage guide
  29.       5 Related things
  30.       6 Troubleshooting
  31.  
  32.   3 Programming
  33.     1 What documentation do I need as an Amiga programmer?
  34.     2 What is CATS?
  35.     3 Where do I get the Amiga includes?
  36.     4 How do I become a developer?
  37.     5 What compilers (assemblers) are there?
  38.     6 Those never working Esc sequences!
  39.     7 Is it possible to use AmigaBasic on the A1200?
  40.     8 How do I localize my program?
  41.     9 How to obtain a pointer to a console's window
  42.     10 What are pragmas?
  43.     11 My Compiler/Linker is complaining about missing symbol xxx.
  44.     12 Where do I find the function xxx?
  45.     13 The GNU C compiler: general information and installation
  46.       1 Current Version
  47.       2 Requirements
  48.       3 Authors
  49.       4 Sources for Gcc
  50.       5 Inline Headers
  51.       6 Amiga Libraries
  52.       7 Installation
  53.       8 How to get help
  54.  
  55.   4 Applications
  56.     1 Text Editors
  57.     2 What word processors are there?
  58.     3 Desktop Publishing
  59.     4 What is TeX and where can I get it?
  60.     5 Are there any Postscript interpreters?
  61.  
  62.   5 How about Graphics?
  63.     1 What are chunky and planar displays?
  64.     2 What is doublebuffering?
  65.     3 What monitors will work on my Amiga 1200/4000?
  66.     4 How do I switch between PAL and NTSC?
  67.  
  68.   6 Emulators
  69.     1 Can I run Unix on my Amiga?
  70.     2 Is it possible to use the Amiga as X11 terminal?
  71.  
  72.   7 Miscellaneous
  73.     1 Is there any unix version of LhA?
  74.     2 What are files ending with ...?
  75.     3 Is there a Stacker-like utility to pack my hard drive?
  76.     4 Where do I get Fish disk xxx?
  77.     5 What is MUI and where do I find it?
  78.  
  79.   8 Where and how do I get software and other informations?
  80.     1 Files and databases on freely distributable software
  81.     2 A collection of tests
  82.     3 Getting files from a FTP server
  83.     4 Getting files from a Mail server
  84.     5 Getting files from a mailbox
  85.     6 The Fish PD series
  86.       1 The Amiga Library disks
  87.       2 The Fresh Fish CD-Roms
  88.     7 How do I Read and write MS-Dos disks?
  89.     8 How do I split large files?
  90.     9 Discussing things
  91.     10 Other FAQ's
  92.  
  93.   The Amiga-FAQ archive
  94.  
  95.   Contributions
  96.  
  97.   Credits
  98.  
  99.   Index
  100.  
  101.  
  102.  
  103.   Disclaimer
  104.   **********
  105.   
  106.      This document is
  107.   
  108.        Copyright (C)  Ignaz Kellerer
  109.                        Georg-Habel-Str. 11
  110.                  81241 Munich (Germany)
  111.                        Tel. (+49) 089 / 885147
  112.                        Internet: kellerer@informatik.tu-muenchen.de
  113.   
  114.      Permission is granted to make and distribute verbatim and modified
  115.   copies of this document following the terms of the "GNU General Public
  116.   License" provided the copyright notice and this permission notice are
  117.   preserved on all copies.
  118.   
  119.      The author gives *absolutely no* warranty that the answers given
  120.   here are correct or usable. Many of them were contributed by other users
  121.   and I cannot even make marginal checks. If you think that something
  122.   should be changed, please tell me. Suggestions, contributions, new
  123.   answers, critics, flames (oh, how I like this `nil:' :-) are rather
  124.   welcome.  See Contributions.
  125.   
  126.   1 CPU, Custom chips, RAM and other stuff
  127.   ****************************************
  128.   
  129.      This chapter contains questions concerning the Amiga-Hardware.
  130.   
  131.   1.1 What are the 68EC020 and the 68EC030?
  132.   =========================================
  133.   
  134.      Motorola, the company producing the 680x0 family offers crippled
  135.   versions of their processors. They are a little bit cheaper than the
  136.   originals, that's why Commodore decided to build the 68EC020 into the
  137.   A1200 and the 68EC030 into the A4000/030.
  138.   
  139.      The difference between the 68020 and the 68EC020 is that the latter
  140.   can address just 16Mb of memory. That's why the A1200 cannot have more
  141.   that 10 Mb RAM. In most cases you will not notice the difference.
  142.   
  143.      This is not the case for the 68EC030: Many owners will notice that
  144.   the 68030 has an MMU and the 68EC030 doesn't have. There are some
  145.   important programs depending on an MMU, for example Enforcer (a
  146.   debugging utility), GigaMem (a program to emulate virtual memory) or
  147.   all current Unix versions (see Unix). Other Amigas than the A4000 and
  148.   the A3000 need an additional processor card to run these.
  149.   
  150.      Finally the 68LC040 is a 68040 without FPU. See FPU.
  151.   
  152.   1.2 What's an FPU?
  153.   ==================
  154.   
  155.      The first 680x0 processors (upto 68030) could process integers only.
  156.   Floating point operations had to be emulated by the software. An FPU is
  157.   a chip (or part of a chip) that can process floating point operations, a
  158.   mathematical coprocessor.
  159.   
  160.      One separates three FPU types on the Amiga: The 68881, 68882 and the
  161.   68040's internal FPU. The 68882 is up to 1.5 times faster than the
  162.   68881, because it is splitted in two parts: A conversion unit (the
  163.   FPU's are using an 80 bit format internally) and the arithmetic unit.
  164.   The 68040's internal FPU adds a pipeline, but misses the trigonometric
  165.   instructions of the others. These are still emulated by the software,
  166.   68040.library for example.
  167.   
  168.      Special programs (Raytracing, DTP, Mathematics, TeX) are offered in a
  169.   special coprocessor version which are up to 50 times faster than the
  170.   original versions.
  171.   
  172.      Michael Kaiser (kaiser@ira.uka.de)
  173.   
  174.   1.3 Can I use a 3.5" HD in my A1200?
  175.   ====================================
  176.   
  177.      Many people would prefer to use a 3.5" instead of the smaller 2.5"
  178.   drives as the former are much cheaper. This is possible, but you need a
  179.   special cable to connect the drive to your IDE controller. Additionally
  180.   you should put some isolating material between the drive and the main
  181.   board. Some people report termic problems but I did not notice anything.
  182.   
  183.      Some dealers offer a set which contains the cable, isolating material
  184.   and for about 20$. See the magazines for more information.
  185.   
  186.      Thomas Schuh (thomas@stepout.tynet.sub.org)
  187.   
  188.   2 The Operating System
  189.   **********************
  190.   
  191.      This chapter handles questions concerning the operating system,
  192.   Kickstart as well as the Workbench.
  193.   
  194.   2.1 Can I use another Kickstart than the builtin?
  195.   =================================================
  196.   
  197.      First let's drop some words on the Kickstart's Copyright: This
  198.   belongs to Commodore, you *must not* use Kickstarts, without the right
  199.   to do it!  Especially it isn't allowed to make an image of anyone
  200.   else's Kickstart and run this on your own Amiga. (I even doubt that it
  201.   is allowed to do this on your own Amigas, if you have more than one.)
  202.   
  203.      But of course it is possible and allowed for some people, developers
  204.   for example.  There are two different ways, a hardware solution and a
  205.   software solution.  The former is to buy a card which can hold two or
  206.   more Kickstart ROMS and allows to select between when the System is
  207.   booting.
  208.   
  209.      The software solution needs a program (softkicker) and an image of
  210.   the ROM. The softkicker allocates RAM, loads the ROM image into the
  211.   allocated memory and reboots. Of course you have less RAM after the
  212.   Reboot: 256Kb when running Kickstart 1.2 or 1.3 and 512Kb for Kickstart
  213.   2.0 or higher.
  214.   
  215.      There are different Softkickers, some of them needing a MMU (see
  216.   68EC0xx). I recommend SKick 3.43 (Aminet, directory `util/boot')
  217.   because it doesn't need a MMU and supports many different Kickstarts.
  218.   It is rather easy to create the ROM image using the following program:
  219.   
  220.            #include <stdio.h>
  221.        
  222.            #define kickorig 0xf80000   /*  0xfc0000 for Kick 1.2 und 1.3   */
  223.            #define kicklen  0x080000   /*  0x040000 for Kick 1.2 und 1.3   */
  224.        
  225.            void main(int argc, char*argv[])
  226.            {
  227.                FILE *fh;
  228.        
  229.                if ((fh = fopen("kickstart.file", "w"))  !=  NULL) {
  230.                    result = fwrite(kickorig, kicklen, 1, fh);
  231.                }
  232.                fclose(fh);
  233.            }
  234.   
  235.   2.2 What is the Amiga equivalent of . (Current directory)?
  236.   ==========================================================
  237.   
  238.      The AmigaDOS equivalent for the . representing the current directory
  239.   on Unix and certain non-reentrant interrupt handlers is the empty
  240.   string, which is written as "".
  241.   
  242.      Example:
  243.            COPY S:Startup-Sequence ""
  244.   
  245.   copies your Startup-Sequence to the current directory.
  246.   
  247.      There is some FD software available to patch a Unix-like
  248.   interpretation of . and .. into the AmigaDOS, including, but not
  249.   limited to, Martin Scott's UnixDirs. (Aminet,
  250.   `os20/util/UnixDirsII.lha' or Fish-disk 837)
  251.   
  252.      Arno Eigenwillig (arno@yaps.dinoco.de)
  253.   
  254.   2.3 The PIPE: queue-handler
  255.   ===========================
  256.   
  257.      In the AmigaOS release 2.04, a new handler for passing data between
  258.   programs was introduced. This handler is called `L:Queue-Handler',
  259.   better known as the `PIPE:' device.
  260.   
  261.      `PIPE:' implements a true `pipe' familiar from UNIX systems.  Its
  262.   function is to pass the output of one program to another program as
  263.   input. You can chain several programs together using multiple pipes.
  264.   
  265.      The advantages of using pipes are:
  266.     1. No need for a lot of RAM to keep the temporary files, or, no need
  267.        to slow things down by storing temporary files on the HD.
  268.   
  269.     2. Faster operation since the intermediate data doesn't need to be
  270.        stored anywhere between programs.
  271.   
  272.      The `PIPE:' device differs from the UNIX pipes in two important
  273.   respects:
  274.     1. It is a device, so the input and output of the programs doesn't
  275.        need to be a redirected standard output, although that is the
  276.        general case. You can also use `PIPE:' instead of files, with two
  277.        restrictions; you can not read a directory from `PIPE:', and the
  278.        `PIPE:' `file' can not be `seeked' in.
  279.   
  280.     2. It does not support a flush operation. If all of the data written
  281.        in a `PIPE:' device is not read out, it will stay there, buffered.
  282.        Thus you must always `empty' a pipe before closing it.
  283.   
  284.     3. Because of the above, if unread data exceeds the size of the
  285.        `PIPE:' internal buffer, the program writing to the pipe will
  286.        `block' (that is, suspend operation) until the data is read. See
  287.        below on how to manually flush a pipe.
  288.   
  289.      The PIPE: handler name syntax is `PIPE:name/bufsize/bufnum', where
  290.   `name' is the name for the pipe channel. Using names you can have
  291.   several simultaneous pipe operations. The optional arguments
  292.   `bufsize'and `bufnum' specify the size and number of the buffers used
  293.   by `PIPE:'. Normally, you would just use `PIPE:name'.
  294.   
  295.      The default buffer size of `PIPE:' is 4096 bytes, and the number of
  296.   buffers (ie. channels) is unlimited.
  297.   
  298.      Osma Ahvenlampi (Osma.Ahvenlampi@hut.fi)
  299.   
  300.   2.3.1 Using PIPE: in a standard AmigaShell environment
  301.   ------------------------------------------------------
  302.   
  303.      First, make sure `PIPE:' is mounted. You can do this by giving the
  304.   command
  305.            1> Mount PIPE:
  306.   
  307.   in a Shell window. On an AmigaOS 2.1+ system, `PIPE:' is normally
  308.   mounted on startup by placing the mount entry file `PIPE' in the drawer
  309.   `DEVS:DosDrivers'.
  310.   
  311.      In an AmigaShell window, give the commands:
  312.            1> Run List SYS: >PIPE:Listoutput
  313.            1> More <PIPE:Listoutput
  314.   
  315.   (1)
  316.   
  317.      These two commands list the contents of the `SYS:' volume to a pipe
  318.   and then type it in the Shell window. You could also use:
  319.            1> Run List SYS: NOHEAD >PIPE:Listoutput
  320.            1> Run Sort PIPE:Listoutput PIPE:Sortedoutput
  321.            1> More <PIPE:Sortedoutput
  322.   
  323.   Notice that you need to `Run' all the programs except for the last one.
  324.   This is so that you can get them all running simultaneously. You could
  325.   also use several Shell windows, or any other way of running all the
  326.   programs at the same time. Also this might not work if `More' isn't the
  327.   standard Commodore AmigaOS 2.04+ More found in `SYS:Utilities'.
  328.   
  329.      In case you need to manually flush a pipe, for example because the
  330.   program that was reading from it aborts prematurely, it can be done
  331.   with the command:
  332.            1> Type PIPE:name TO NIL:
  333.   
  334.      ---------- Footnotes ----------
  335.   
  336.      (1)  Note that `1>' is the prompt AmigaShell gives when it is
  337.   waiting for a command. The number varies, and the prompt can be
  338.   customised to look completely different. It is not a part of the
  339.   command.
  340.   
  341.   2.3.2 The Pipe command
  342.   ----------------------
  343.   
  344.      As you can see, this is a somewhat difficult way of using pipes,
  345.   needing a lot of typing especially compared to the UNIX pipes. There is
  346.   a solution for that.
  347.   
  348.      Andy Finkel, a former Commodore software engineer wrote a command
  349.   called `Pipe' (not to be confused with `PIPE:') that simplifies the use
  350.   of the `PIPE:' device. Unfortunately, this command did not make it into
  351.   the 2.04 release. However, Commodore has given the permission to
  352.   distribute this, and a few other commands, freely. (Sources: Fish disk
  353.   637, Aminet, `util/cli/finkelshelltools.lha')
  354.   
  355.      For some reason Commodore did not include these commands in the later
  356.   OS releases, although they work fine even with OS 3.1 (V40). Thus all
  357.   users are required to get them from the above sources if they wish to
  358.   use them.
  359.   
  360.      The Pipe command usage is simple. The commands to be run with their
  361.   inputs and outputs piped together are given as arguments to the
  362.   command, separated by the | (vertical bar) character:
  363.   
  364.            1> Pipe List SYS: | More
  365.                or
  366.            1> Pipe List: SYS: NOHEAD | Sort IN: OUT: | More
  367.   
  368.   Notice how Sort needs `IN:' and `OUT:'. These devices don't actually
  369.   exist, but the Pipe command simulates them with the PIPE:. This is
  370.   necessary because C:Sort can not use the `standard IO', but insists on
  371.   files.
  372.   
  373.      The separator character | can be configured to be something else
  374.   with the local variable __PCHAR.
  375.   
  376.   2.3.3 Pipe command support in AmigaShell
  377.   ----------------------------------------
  378.   
  379.      There is a little known and quite useful undocumented feature built
  380.   in the 2.04+ AmigaShell, that is, AmigaShell knows about the `Pipe'
  381.   command. By setting the local variable _PCHAR, you can use pipes
  382.   without even entering the Pipe command. AmigaShell will prepend it on
  383.   the command line automatically if it sees the pipe separator command
  384.   specified by _pchar on the command line.
  385.   
  386.      Thus, after the command:
  387.            1> Set _pchar "|"
  388.   
  389.   (1)
  390.   
  391.      the above examples can be used like this:
  392.            1> List SYS: | More
  393.                or
  394.            1> List SYS: NOHEAD | Sort IN: OUT: | More
  395.   
  396.      Those familiar with the UNIX pipes will notice how the usage is very
  397.   similar to the UNIX pipe usage.
  398.   
  399.      ---------- Footnotes ----------
  400.   
  401.      (1)  The quotes around the vertical bar are important, to avoid
  402.   AmigaShell interpreting the command as an attempt to use PIPE:, if
  403.   _PCHAR is already set (for example if the Shell is started from within
  404.   another one).
  405.   
  406.   2.3.4 Quick usage guide
  407.   -----------------------
  408.   
  409.     1. Get the ShellTools archive from the Fish disk 673, or from Aminet,
  410.        `util/cli/hacks204.lha'.
  411.   
  412.     2. Install the commands in this archive in your Shell search path,
  413.        preferably C:.
  414.   
  415.     3. Put the command `Set _pchar |' in your `S:Shell-Startup' file.
  416.   
  417.     4. Restart your AmigaShell so that it reads the `S:Shell-Startup'.
  418.   
  419.     5. Try `List SYS: | More'
  420.   
  421.     6. Read the ShellTools documentation and experiment.
  422.   
  423.   2.3.5 Related things
  424.   --------------------
  425.   
  426.      The variable _mchar is used to separate one command from another in
  427.   a shell line.  So, after the command:
  428.            1> Set _mchar ";"
  429.      you can put more shell commands into the same line, separated from
  430.   each other by `;'.
  431.   
  432.   2.3.6 Troubleshooting
  433.   ---------------------
  434.   
  435.   *Q:*
  436.        When I try the command `List SYS: | More' I get an error
  437.                 PIPE: Unknown command
  438.   
  439.        I have `PIPE:' mounted, what's wrong?
  440.   
  441.   *A:*
  442.        AmigaShell is referring to the command `Pipe' in the error, not the
  443.        `PIPE:' device. You haven't installed the commands in the
  444.        ShellTools archive.
  445.   
  446.   *Q:*
  447.        I get a requester that says
  448.                 Please insert volume PIPE: in any drive
  449.   
  450.        when I try any of the command examples.
  451.   
  452.   *A:*
  453.        `PIPE:' is not mounted. Try `Mount PIPE:'. If that doesn't work,
  454.        refer to your AmigaDOS manual or a friend that knows how to mount
  455.        devices.
  456.   
  457.   *Q:*
  458.        When I try any of the examples the More window pops up but nothing
  459.        is shown/I get an error afterwards/More pops up a file requester.
  460.   
  461.   *A:*
  462.        You are not using the standard AmigaOS `More' command. Either use
  463.        another name or install a command that supports pipes.
  464.        Possibilities are the C= More, Less, or Most for example.
  465.   
  466.   *Q:*
  467.        None of these happen but it still doesn't work as you described.
  468.   
  469.   *A:*
  470.        Are you using OS 2.04 later? Are you using the standard AmigaShell?
  471.        Try with all extras disabled.
  472.   
  473.   3 Programming
  474.   *************
  475.   
  476.      This chapter handles problems arising for programmers and
  477.   compiler-users only.
  478.   
  479.   3.1 What documentation do I need as an Amiga programmer?
  480.   ========================================================
  481.   
  482.      The best information available are the RKMs (ROM Kernel Manuals), 3rd
  483.   edition, by Commodore, published by Addison-Wesley:
  484.        The Amiga ROM Kernel Manual:  Libraries, ISBN 0-201-56774-1
  485.        The Amiga ROM Kernel Manual:  Devices, ISBN 0-201-56775-X
  486.        The Amiga ROM Kernel Manual:  Includes and Autodocs, ISBN
  487.                                                             0-201-56773-3
  488.        The Amiga Hardware Manual, ISBN 0-201-56776-8
  489.        The Amiga User Interface Style Guide, ISBN 0-201-57757-7
  490.   
  491.   Especially the RKM: Libraries is a must. The RKM: Includes and Autodocs
  492.   isn't that much worth: Better get the same stuff on disk instead to
  493.   have it online.  See Includes.
  494.   
  495.      AmigaDOS isn't included in these books. The Autodocs give much
  496.   information, but to go deeper you probably need
  497.        The AmigaDOS Manual, 3rd Edition, ISBN 0-553-35403-5
  498.      published by Bantam Books.
  499.   
  500.      A better choice for developers is
  501.        The Amiga Guru Book
  502.   
  503.   by Ralph Babel. The book starts with a survey on different aspects of
  504.   programming the Amiga. (About 250 pages) Useful for beginners are the
  505.   sections on the Amiga's data types (not to be confused with the 3.x
  506.   DataTypes used by MultiView, for example), the Includes and the
  507.   amiga.lib. But even experienced programmers will find useful things
  508.   here that are missing in the RKMs.  But the largest part are about 500
  509.   pages on AmigaDOS and, as I think, the most important, because AmigaDOS
  510.   is the worst officially documented part of the OS. The book is rather
  511.   concise and hence not as easy to read as the RKMs, but I recommend it
  512.   as an addition and instead of the AmigaDOS manual.  (Not, however, a
  513.   replacement for the Libraries and Devices, which aren't covered here.)
  514.   Unfortunately the book has no ISBN and is available in special stores
  515.   only. But there are some mail order companies which offer it for about
  516.   50$ and which accept credit cards:
  517.   
  518.        Hirsch & Wolf OHG; Mittelstrasse 33; D-56564 Neuwied; Germany
  519.        Voice: +49 (2631) 8399-0; Fax: +49 (2631) 8399-31
  520.        E-Mail: <hhhirsch@carla.adsp.sub.org> (fax preferred)
  521.        (Eurocard/Mastercard/VISA)
  522.        
  523.        Periscope; Attn: Cody Lee; 1717 W Kirby Ave; Champaign, IL 61821, USA
  524.        Voice: +1 (217) 398 4237; Fax: +1 (217) 398 4238
  525.        E-Mail: <periscope@cei.com>
  526.        
  527.        Someware; 27 rue Gabriel Peri; 59186 Anor; France
  528.        Voice: +33 27596000; Fax: +33 27595206
  529.        E-Mail: <didierj@swad.adsp.sub.org>
  530.   
  531.      See FAQs.
  532.   
  533.   3.2 What is CATS?
  534.   =================
  535.   
  536.      This is a department at Commodore West Chester which was formerly
  537.   named `Commodore Amiga Technical Support' and was later renamed
  538.   `Commodore Application and Technical Support'. These are people that
  539.   work independently of Engineering, but close together with them, and try
  540.   to help developers outside of Commodore to create nice Amiga
  541.   applications, software or hardware. To achieve this, CATS has gathered
  542.   a lot of informations and tools, on floppy, CD, or paper. Much of this
  543.   material is also available to the general public. (1) But don't mix
  544.   this up with some sort of Hotline for everyone!
  545.   
  546.      For Americans the address to get this material is
  547.            CATS - Developer Applications
  548.            Commodore
  549.            1200 Wilson Drive
  550.            West Chester, PA. 19380
  551.   
  552.   for all Europeans it's a company in Germany:
  553.            Fa. Hirsch & Wolf
  554.            Mittelstr. 33
  555.            56564 Neuwied
  556.            Tel. 02631/83990
  557.   
  558.      Dr. Peter Kittel, peterk@cbmger.de.so.commodore.com
  559.   
  560.      ---------- Footnotes ----------
  561.   
  562.      (1)  Which means: For Non-Developers.
  563.   
  564.   3.3 Where do I get the Amiga includes?
  565.   ======================================
  566.   
  567.      The only legal way to get the includes and autodocs (and you *should*
  568.   get them, they are *very* useful!) is to become a developer (see
  569.   Developer) or to buy the `NDU' (Native developers update kit, also
  570.   known as `NDUK' or `NDK'), which is offered by CATS. They cost about
  571.   30$ plus shipping and this seems to me to be a fair price. See CATS.
  572.   The current version is 3.1.
  573.   
  574.      If you need only the includes, you could get them as well with a
  575.   compiler (commercial compilers only) or by getting the Fresh Fish CD.
  576.   See Fish CD.
  577.   
  578.   3.4 How do I become a developer?
  579.   ================================
  580.   
  581.      You need the `ADSP' (Amiga Developer Support Program) documents. To
  582.   get this write a letter to your local Commodore branch asking for these
  583.   documents.  Everything else should be explained there. The german
  584.   address (for the US address see CATS) is
  585.            Commodore
  586.            Lyoner Strasse 38
  587.            60528 Frankfurt
  588.      There are three different developer versions:
  589.   *Registered*
  590.        developers get access to the CBMNET (kind of a Commodore-internal
  591.        Usenet), which makes it possible to discuss problems with other
  592.        developers, Commodore engineers included. Registered developers
  593.        pay about US$80 per year, plus initial US$30 initially.
  594.   
  595.   *Certified*
  596.        developers seem to me the most interesting claass: They have the
  597.        possibility copy the most beta versions of the system software
  598.        (Kickstart and Workbench) and the respective Includes and
  599.        AutoDocs. (Not all beta versions and especially no beta hardware.)
  600.        You pay about US$250 per year plus US$50 initially for this.
  601.   
  602.   *Commercial*
  603.        developers finally have in most details the same as certified
  604.        developers, but may expect to get more beta versions and sooner,
  605.        included beta hardware (This has *not* always been so in the
  606.        past.), hencethey pay about US$400 plus US$50 initially.
  607.   
  608.   The above describes the prices and the situation in Germany and might be
  609.   different elsewhere. Especially not all Commodore branches offer the
  610.   registered status. A hint is to build a group of users and become a
  611.   developer group, so the costs are reduced.
  612.   
  613.      All developers have to sign non-disclosure agreements (`NDA') which
  614.   specify that we may not discuss information outside of authorized areas
  615.   even to other developers until given explicit permission by Commodore.
  616.   
  617.   3.5 What compilers (assemblers) are there?
  618.   ==========================================
  619.   
  620.      There is a lot of programming languages on the Amiga, commercial as
  621.   well as freely distributable. I will enumerate only those that I know
  622.   or which seem it worth to me otherwise.
  623.   
  624.   *Assembler*
  625.        All C-compilers have an Assembler included. Freely distributable
  626.        are A68K and PhxAss (directory `dev/asm' on Aminet or Fish disks
  627.        521 and 906)
  628.   
  629.   *C*
  630.   *C++*
  631.        Freely distributable C-compilers are `gcc' (which has its own
  632.        directory `dev/gcc' on Aminet) and the evaluation version of
  633.        `Dice' (for example per FTP from `ftp.uni-paderborn.de', directory
  634.        `/news/comp.binaries.amiga/volume91/languages' or on Fish disk
  635.        491).  The advantage of gcc is that you find gcc versions all over
  636.        the world and on all computer systems. Another advantage is that
  637.        C++ is included into gcc! But it is slow and needs 4Mb of RAM or
  638.        more.  See The GNU C compiler.  See Mailing lists.
  639.   
  640.        Commercial C compilers are `Aztec-C', `Dice' and `SAS/C'.
  641.        `Aztec-C' doesn't seem to get further development any more.  It
  642.        should be remarked that the commercial compilers have especially
  643.        wonderful debugging utilities (Source level debuggers!) that the
  644.        others are missing.  SAS/C has a crosscompiler included, which
  645.        translates C++ to C and supports the source level debugger too.
  646.        Dice is the cheapest and fastest commercial compiler, but SAS
  647.        offers a students discount and updates for owners of other
  648.        compilers which isn't very expensive too. To get information about
  649.        DICE, send email to info@oic.COM. An automatic system will return
  650.        complete details, including upgrade prices.
  651.   
  652.        Comeau C++ is a crosscompiler like SAS/C++. That wouldn't be a
  653.        problem, but Comeau C++ doesn't have a C compiler included.  You
  654.        need SAS/C, Aztec-C or Dice additionally. But it is AT&T cfront 3.0
  655.        compliant and supports exceptions. And like gcc it runs on many
  656.        platforms.  Maxxon C++ is offered in Germany. I cannot say
  657.        anything on it. Both compilers are commercial. Comeau's address is:
  658.                 Comeau computing
  659.                 91-34, 120th Street
  660.                 Richmond Hill, NY, 11418-3214
  661.                 USA
  662.             
  663.                 EMail: Greg Comeau, comeau@bix.com
  664.   
  665.   *Forth*
  666.        JForth is said to be an excellent Amiga port of Forth. Among its
  667.        advantages are object oriented extensions, full Amiga interface
  668.        and an application generator. It is available from:
  669.                 Delta Research
  670.                 P.O. Box 151051
  671.                 San Rafael, CA   94915-1051
  672.             
  673.                 Phone: (415) 453-4320
  674.                 EMail: Phil Burk, phil@ntg.com
  675.                        Mike Haas, haas@starnine.com
  676.   
  677.   *Fortran*
  678.        (Sigh! Still people who need it :-<) Freely distributable are BCF
  679.        (Fish disk 470) and f2c, a Fortran to C converter (Aminet,
  680.        directory `/dev/misc'). A commercial compiler is offered from
  681.        ABSoft. All these are Fortran 77 compilers, I don't know any
  682.        Fortran 90 compiler on the Amiga.
  683.   
  684.   *Lisp*
  685.        Freely distributable Lisp interpreters are XLisp (Fish disk 181)
  686.        and OakLisp (Fish disks 519 and 520) and CLISP
  687.        (`/pub/lisp/clisp/binaries/amiga' at the server `ftp
  688.        ma2s2.mathematik.uni-karlsruhe.de'). Lisp compilers are Gambit
  689.        (Fish 764 and 765) and Scheme-to-C (Fish disks 556, 557 and 558).
  690.        See Mailing lists.
  691.   
  692.   *Prolog*
  693.        `/dev/lang/UNSWProlog.lha' and `dev/lang/sbp3_1e.lha' on Aminet as
  694.        well as `SBProlog' on Fish disk 141 and `SBProlog' on Fish disk
  695.        145 are freely distributable Prolog interpreters.
  696.   
  697.   *Modula-2*
  698.        M2Amiga is offered in Europe, Benchmark Modula-2 in the U.S. Both
  699.        are said to be very good, have a powerful source-level-debugger, a
  700.        large library.  Especially M2Amiga has great support by a german
  701.        user-group (AMOK) which for example offers own PD disks. See
  702.        Mailing lists.
  703.   
  704.        M2Amiga is offered by:
  705.                 A+L AG
  706.                 Daderiz 61
  707.                 2540 Grenchen
  708.                 Schweiz
  709.             
  710.                 Tel.: +41/65/52 03-11
  711.                 Fax:              -79
  712.   
  713.        Benchmark Modula-2 is available from:
  714.                 Armadillo Computing
  715.                 5225 Marymount Drive
  716.                 Austin, Texas 78723
  717.                 USA
  718.             
  719.                 Phone/FAX: 512/926-0360.
  720.                 EMail: Jim Olinger, jolinger@bix.com
  721.   
  722.   *Oberon*
  723.   *Oberon-2*
  724.        Two compilers (both Oberon-2) are available: AmigaOberon
  725.        (commercial) is offered by the same company as M2Amiga. It is
  726.        integrated into a full developers environment and has a large
  727.        library of modules.  Library linker and  source level debugger are
  728.        available.
  729.   
  730.        Oberon-A is a Freeware compiler. (Source: Aminet, `dev/obero'
  731.        directory) However, this is a beta release, especially the module
  732.        library is limited. See Mailing lists.
  733.   
  734.        The AMOK user group supports AmiOberon as well as M2Amiga.
  735.   
  736.   *Pascal*
  737.        There is a PD-compiler called PCQ (Directory `dev/lang' on Aminet
  738.        or Fish disk 511). It doesn't support all of Pascal and major
  739.        features are missing. P2C, a pascal to C converter is on disk 341.
  740.        (Aminet: `/dev/misc/p2c120.lha') Additionally there are two
  741.        commercial compilers called HiSoft Pascal and KickPascal. HiSoft
  742.        Pascal and P2C claim to be compatible to Turbo Pascal up to 5.0.
  743.        HiSoft has a source level debugger included.
  744.   
  745.   3.6 Those never working Esc sequences!
  746.   ======================================
  747.   
  748.      Many printers come with a manual that explains which Esc sequence
  749.   causes which action on the printer. But there happen weird things when
  750.   you try to send these sequences to your printer, either it does
  751.   nothing, or it does something completely different. There is a reason,
  752.   the Amiga printer drivers. These drivers are made in a way that they
  753.   only understand a certain set of `ANSI Esc sequences', not the special
  754.   ones defined (differently) by the various printer manufacturers. The
  755.   purpose is that every application on the Amiga just uses this one
  756.   standard set of control sequences and this way doesn't need to know
  757.   which printer is actually connected. The printer driver then translates
  758.   these standard sequences into the special sequences a certain printer
  759.   understands.  A list of the available ANSI Esc sequences is found in
  760.   the current Workbench manuals (or older AmigaDOS manuals). Now if you
  761.   want to issue a control sequence to the printer that's not available as
  762.   an ANSI command, you have two possibilities to achieve this:
  763.     1. Bypass the printer driver (that would unsuccessfully try to
  764.        interpret the sequence) and send your output *only* during this
  765.        sequence to `PAR:' (or `SER:', respectively). For this you have to
  766.        close and open printer output channels very often which is rather
  767.        tedious, and you have to know where (`PAR:' or `SER:') your
  768.        printer is connected.
  769.   
  770.     2. Use a special ANSI sequence, made exactly for this case:
  771.                 `Esc[<n>"<x>'
  772.        where `<n>' is the decimally typed number of bytes in the string
  773.        `<x>', which actually contains your special printer sequence. This
  774.        ANSI sequence tells the printer driver to not interpret or
  775.        translate the next `<n>' bytes.
  776.           But both methods have one big disadvantage when used in an
  777.   application program: You lose the printer independency! If you stick to
  778.   ANSI sequen- ces, you can output to any printer on earth, as long as
  779.   there is an Amiga printer driver for it. If you start to use special
  780.   control sequences, your program will be tied to this single printer
  781.   model and will not be usefull for any other (or you would have to
  782.   provide some dozen new printer drivers for your application).
  783.   
  784.      Dr. Peter Kittel, peterk@cbmger.de.so.commodore.com
  785.   
  786.   3.7 Is it possible to use AmigaBasic on the A1200?
  787.   ==================================================
  788.   
  789.      We heard conflicting reports about AmigaBasic on the A1200: While I
  790.   said that you can work sufficiently with it, others said that this
  791.   isn't possible, as AmigaBasic crashes on the slightest little error.  I
  792.   couldn't reproduce this.
  793.   
  794.      Now I can. It depends on the setting in the Sound Prefs editor. When
  795.   you activate a sound there, this conflicts with sound that AmigaBasic
  796.   tries to produce by hand and obviously not quite the correct way itself.
  797.   
  798.      Easy solution: To work with AmigaBasic on the A1200, just
  799.     1. Switch off sound output in the Sound prefs editor.
  800.   
  801.     2. On the A4000 (as well as on an A1200 with Fast Mem expansion (1))
  802.        you  additionally need to run NoFastMem.
  803.   
  804.     3. Better avoid SUBs and use conventional GOSUBs instead, then the
  805.        compatibility with newer processors will be higher.
  806.   
  807.      Dr. Peter Kittel, peterk@cbmger.de.so.commodore.co
  808.   
  809.      ---------- Footnotes ----------
  810.   
  811.      (1)  If you have a turbo board
  812.   
  813.   3.8 How do I localize my program?
  814.   =================================
  815.   
  816.      Suggest, you want to write a `HelloLocalWorld.c'. Your final program
  817.   will look like this:
  818.   
  819.            #include "HelloLocalWorld_Cat.h"
  820.            #include <clib/exec_protos.h>
  821.        
  822.            struct Library *LocaleBase;
  823.        
  824.            void main(int argc, char *argv[])
  825.        
  826.            {
  827.                /* Open the locale.library. No kill, if not successfull.
  828.                   (Just use the builtin catalog strings instead.) Note, that
  829.                   we open locale.library here, even if our compiler supports
  830.                   AutoOpening.
  831.                */
  832.                LocaleBase = OpenLibrary("locale.library", 38);
  833.                OpenHelloLocalWorldCatalogs(NULL, NULL);
  834.        
  835.                printf(GetString(MSG_Hello));
  836.        
  837.                CloseHelloLocalWorldCatalog();
  838.                if (LocaleBase) CloseLibrary(LocaleBase);
  839.            }
  840.   
  841.      The routine GetString checks, if the wished catalogs are available
  842.   and returns a pointer to either the builtin string or the catalog
  843.   string. (In my case the german string.)
  844.   
  845.      You see, the main difference besides the minor opening and closing
  846.   stuff (OpenLibrary, OpenHelloLocalWorldCatalogs, ...) is to replace
  847.   strings with a function call. Hence we need a file
  848.   `HelloLocalWorld_Cat.c', which holds OpenHelloLocalWorld, GetString,
  849.   CloseHelloLocalWorld and the builtin strings (this could be an array,
  850.   where
  851.                array[MSG_Hello] = "Hello, local world.\n";
  852.   
  853.   is defined) and an include file `HelloLocalWorld_Cat.h', which defines
  854.   the message ID's like MSG_Hello. You don't need to know, how these files
  855.   work internally, especially you don't need to know `locale.library'!
  856.   
  857.      There are some catalog generators (in what follows: CGs) available
  858.   (`CatComp', for devlopers only, `KitCat', german docs only, `MakeCat',
  859.   which I don't know and `FlexCat', which I  recommend, because it is
  860.   most flexible in the generated source and supports catalogs on 2.0 and
  861.   any language, even Amiga-E, Cluster, Pascal, ... and besides that: I'm
  862.   the author ;-) are tools, that create  HelloLocalWorld_Cat.h,
  863.   HelloLocalWorld_Cat.c and the real catalogs for you. (The above code
  864.   might differ slightly between the different CGs.) (See Aminet, directory
  865.   `dev/misc'.)
  866.   
  867.      Of course they need to know how to use them. First create a so-called
  868.   `catalog-description' file. This could look like this:
  869.            ; Lines beginning with a semicolon are comment lines.
  870.            # language english
  871.            ; the language of the builtin strings
  872.            # version 0
  873.            ; the catalog version (0 = any)
  874.            MSG_Hello (1/15/30)
  875.            Hello, local world
  876.   
  877.   Any string is defined by a line like the last two lines above: MSG_Hello
  878.   is the message-ID, (1/15/30) says, that the value of MSG_Hello should be
  879.   1 (you may omit this, in which case just the next free number is used)
  880.   and the string must not be shorter than 15 characters or longer than 30
  881.   characters. (These may be omitted too.)
  882.   
  883.      Now write your program. Once you are ready, use the CGs to create a
  884.   so-called catalog translation file. (One for any language different than
  885.   the builtin.) In my case (german) this could look like this:
  886.            ; Lines beginning with a semicolon are comment lines.
  887.            ## language deutsch
  888.            ; the catalog language (german)
  889.            ## version $VER: Deutsch.catalog 1.0 (22.12.93)
  890.            ; the catalog files version string
  891.            MSG_Hello
  892.        
  893.            ; Hello, local world
  894.   
  895.   Note the empty line after the message ID. (The arguments of ## language
  896.   and ## version would be missing as well.) You have to fill in the
  897.   german strings here. Again using the CGs you create a catalog file from
  898.   this. Additionally note, that no informations on the strings ID or
  899.   length are behind MSG_Hello.  They are taken from the catalog
  900.   description file.
  901.   
  902.      Once you change the program (adding strings, changing the string
  903.   length) you change the catalog description as well, use the CGs in the
  904.   same way to update the catalog translation and hence the catalogs.
  905.   
  906.   3.9 How to obtain a pointer to a console's window
  907.   =================================================
  908.   
  909.      The following function returns the window pointer of a CON window.
  910.   It can be executed safely under all versions of the Amiga's OS.
  911.   
  912.          struct Window *getConWindowPtr(BPTR fh)
  913.          {
  914.            struct Window *w;
  915.            struct FileHandle *cfh;
  916.            struct StandardPacket *sp;
  917.            struct InfoData *id;
  918.            struct MsgPort *mp;
  919.        
  920.            w = NULL;
  921.        
  922.            if ((cfh = BADDR(fh))->fh_Type != NULL) {
  923.              if (sp = AllocMem(sizeof (struct StandardPacket),
  924.                                MEMF_PUBLIC | MEMF_CLEAR)) {
  925.                if (id = AllocMem(sizeof (struct InfoData),
  926.                                  MEMF_PUBLIC | MEMF_CLEAR)) {
  927.                  if (mp = CreatePort(NULL, 0)) {
  928.                    sp->sp_Msg.mn_Node.ln_Name = (char *) &sp->sp_Pkt;
  929.                    sp->sp_Pkt.dp_Link         = &sp->sp_Msg;
  930.                    sp->sp_Pkt.dp_Port         = mp;
  931.                    sp->sp_Pkt.dp_Type         = ACTION_DISK_INFO;
  932.                    sp->sp_Pkt.dp_Arg1         = MKBADDR(id);
  933.        
  934.                    PutMsg(cfh->fh_Type, &sp->sp_Msg);
  935.                    (void) WaitPort(mp);
  936.                    (void) GetMsg(mp);
  937.        
  938.                    if (sp->sp_Pkt.dp_Res1)
  939.                      w = (struct Window *) id->id_VolumeNode;
  940.        
  941.                    DeletePort(mp);
  942.                  }
  943.                  FreeMem(id, sizeof (struct InfoData));
  944.                }
  945.                FreeMem(sp, sizeof (struct StandardPacket));
  946.              }
  947.            }
  948.        
  949.            return w;
  950.          }
  951.   
  952.      Notes:
  953.      * Accessing a console's window directly may interfere with operations
  954.        performed by the CON handler. Be careful!
  955.   
  956.      * To obtain the window pointer of a CLI's console, pass the
  957.        FileHandle returned by Open("*", MODE_OLDFILE) to the above
  958.        function.
  959.   
  960.      * The result of the above function may well be NULL, e.g. in case of
  961.        an AUX handler or if an AUTO CON handler is unable to open its
  962.        window.
  963.   
  964.      * Sending an ACTION_DISK_INFO packet to an AUTO CON handler (2.0+)
  965.        causes its window to lose its special AUTO properties (i.e. it can
  966.        no longer be closed at any time by clicking on its Close gadget),
  967.        as the window pointer returned in id_VolumeNode must remain valid
  968.        from now on.
  969.   
  970.      * All in all: Don't use this function. :-)
  971.   
  972.      For more information, please refer to pages 273, 276, 435, 463, 485,
  973.   and 629 in "The Amiga Guru Book" (see Manuals).
  974.   
  975.      Ralph Babel, rbabel@babylon.pfm-mainz.de
  976.   
  977.   3.10 What are pragmas?
  978.   ======================
  979.   
  980.      Pragmas are special compiler commmands which control certain
  981.   features of a C-compiler. Two problems arise when using pragmas:
  982.     1. Pragmas are compiler specific. You cannot expect that one compiler
  983.        will understand pragmas of another compiler, even if both run on
  984.        the Amiga.
  985.   
  986.     2. You are not guaranteed that a compiler ignores pragmas, that he
  987.        doesn't understand. Even more: It might not help, to use something
  988.        like this:
  989.                 #ifndef MY_COMPILER
  990.                 #pragma DoAnything
  991.                 #endif
  992.   
  993.   A workaround is to put pragmas in a special include file (BTW, the same
  994.   holds true for statements like #asm (Aztec-C) or #extern (C++) and
  995.   replace the above with
  996.            #ifndef MY_COMPUTER
  997.            #include <mypragmas.h>
  998.            #endif
  999.   
  1000.      But what do pragmas on the Amiga? The most common usage (not the
  1001.   only, but most meant when talking about pragmas) is to tell the
  1002.   compiler about how to call library functions: Simple C functions expect
  1003.   their arguments on the stack, but library functions want their
  1004.   arguments in special processor registers and additionally the `library
  1005.   base' in register a6. Lets have a look at a pragma command of the
  1006.   Aztec-Compiler.
  1007.            #pragma amicall(SysBase,0xd2,FreeMem(a1,d0))
  1008.   
  1009.   This tells the compiler to put the first argument of FreeMem in register
  1010.   a1, the second in register d0 and the value of the variable SysBase in
  1011.   register a6. Maxons pragmas look the same, Dice pragmas and SAS pragmas
  1012.   look a bit more complicated;
  1013.            #pragma libcall SysBase FreeMem d2 0902
  1014.   
  1015.   Here d2 is (like 0xd2 above) the `library vector offset' (see below),
  1016.   the digits 09 are codes for the argument register in reversed order
  1017.   (Register codes are 0=d0, 1=d1, .., 8=a0, 9=a1, a=a2, ..), the
  1018.   following 0 is the result's registerä(always d0))and the final digit 2
  1019.   is the number of arguments.
  1020.   
  1021.      A command `FreeMem(fib,sizeof(*fib);' could produce the following
  1022.   code, if the compiler has seen a pragma statement like above:
  1023.            move.l  _fib,a1
  1024.            move.l  260,d1        ; sizeof(struct FileInfoBlock)
  1025.            move.l  _SysBase,a6
  1026.            jsr     -0xd2(a6)       ; 0xd2 = _LVOFreeMem
  1027.   
  1028.   Calling FreeMem in that way is shorter and faster than pushing the
  1029.   arguments on the stack, calling a function _FreeMem which would do just
  1030.   the same like the above code by pulling the arguments from the stack.
  1031.   
  1032.      The best way to use pragmas is to include statements like the
  1033.   following in your program:
  1034.            /*    Get the prototype for the function; note, that this is    */
  1035.            /*    compiler independent.                    */
  1036.            #include <clib/exec_protos.h>
  1037.        
  1038.            /*    Get the pragma; compiler dependent, but most pragmas    */
  1039.            /*    are in files with the same name.
  1040.            #ifdef AZTEC_C
  1041.            #include <pragmas/exec_lib.h>
  1042.            #endif
  1043.            #if defined(__SASC) || defined(_DCC) || defined(__MAXON__)
  1044.            #include <pragmas/exec_pragmas.h>
  1045.            #endif
  1046.            #ifdef __GNUC__
  1047.            #include <inline/exec.h>
  1048.            #endif
  1049.   
  1050.   The above example can be compiled on all these compilers and produce the
  1051.   best code.
  1052.   
  1053.      A final question arises: How to get the pragmas? Most compilers have
  1054.   them included. However, sometimes you want to produce pragmas for
  1055.   yourself, for example if you are using new libraries or new versions
  1056.   with additional functions. In that case you can produce them from the
  1057.   so-called `FD' files which should be a part of the developer docs of
  1058.   the library. (The NDU has a directory FD which contains FD files for
  1059.   all libraries and devices of the OS. see Includes) Most compilers have
  1060.   a utility with the name `fd2pragma' or similar included which can do
  1061.   that for you. A freely distributable version which can produce pragmas
  1062.   for Aztec, Dice, SAS and Maxon as well as LVO files for assembler and
  1063.   stub routines for the tag versions is available on Aminet
  1064.   (`dev/misc/fd2pragma2_0.lha' and on the Fish CDs.
  1065.   
  1066.      For pragmas under gcc see Inline Headers.
  1067.   
  1068.   3.11 My Compiler/Linker is complaining about missing symbol xxx.
  1069.   ================================================================
  1070.   
  1071.      First be sure, that the function is really missing: For example
  1072.   floating point functions are in a special link library and you need a
  1073.   linker option like `-lm' to include it into your program. Another
  1074.   possibility would be that you are using a library function and didn't
  1075.   notice it. This might lead to a missing library base, `IntuitionBase'
  1076.   for example. In that case just put something like
  1077.            struct Library *IntuitionBase;
  1078.   
  1079.   somewhere in the global part of your program. (Don't forget to call
  1080.   OpenLibrary() and CloseLibrary! :-)
  1081.   
  1082.      However, you could as well use a function which really isn't present
  1083.   in your library at all. If you have, for example, an amiga.lib from 2.0
  1084.   you would hardly find the locale functions or the pool memory
  1085.   functions. (1) Best solution is to get the NDU (see Includes), but you
  1086.   probably don't want to wait for it. In that case you have to find what
  1087.   kind of function you are missing.
  1088.      * Simple library functions (Examples: `exec/AllocPooled',
  1089.        `locale/OpenCatalogA') can be called with pragmas. However, you
  1090.        need informations on the name of the library base and where to put
  1091.        the arguments. See Pragmas.
  1092.   
  1093.      * Tag functions are mostly just stub functions which call library
  1094.        functions. If you have, for example, `dos/AllocDosObject' which
  1095.        expects a constant and a pointer to an array of tags, you have the
  1096.        varargs version `AllocDosObjectTags' which expects tags on the
  1097.        stack as well! Just create the following function:
  1098.                 #include <clib/dos_protos.h>
  1099.                 #include <pragmas/dos_pragmas.h>    /*  Probably wrong name */
  1100.             
  1101.                 void *AllocDosObjectTags(ULONG objtype, Tag tag1, ...)
  1102.                 { return(AllocDosObject(objtype, (struct TagItem *) &tag1);
  1103.                 }
  1104.   
  1105.      * Some functions still remain: Amiga.lib has some functions which
  1106.        are really doing valuable things and not just call a library: The
  1107.        BOOPSI functions (`DoMethod', `DoSuperMethod') the memory pool
  1108.        functions (`LibAllocPooled', `LibCreatePool', which are
  1109.        replacements of 3.0 functions). The only way to replace these is
  1110.        to get equivalents. The AmigaFAQ archive contains some of them
  1111.        (DoMethod, DoSuperMethod and HookEntry) in the `programmer'
  1112.        directory as well as the most common pragma files and some
  1113.        examples of varargs functions. See Amiga-FAQ Archive.
  1114.   
  1115.      ---------- Footnotes ----------
  1116.   
  1117.      (1)  This problem arises most frequently for owners of Aztec which
  1118.   is no longer supported and owners of Dice, which has sometimes rather
  1119.   incomplete libraries. I own both ...
  1120.   
  1121.   3.12 Where do I find the function xxx?
  1122.   ======================================
  1123.   
  1124.      If you are not sure about the name of the appropriate function for a
  1125.   certain job or in which library to find it, you can search in these
  1126.   places:
  1127.      * In the Autodocs for each library you find at the very beginning a
  1128.        contents table listing all functions available in this library.
  1129.        They are sorted alphabetically, just like in the rest of the
  1130.        Autodocs.  In the body part of the Autodocs you find complete
  1131.        explanations and specifications for each library function. See
  1132.        Includes.
  1133.   
  1134.      * The .FD files also offer a very compact overview over all functions
  1135.        of the diverse libraries, complete with a short information about
  1136.        the function arguments. If you already know roughly what you
  1137.        search for and e.g. only need the precise order of the arguments,
  1138.        you can find all needed information here. See Pragmas.
  1139.   
  1140.      Dr. Peter Kittel, peterk@cbmger.de.so.commodore.com
  1141.   
  1142.   3.13 The GNU C compiler: general information and installation
  1143.   =============================================================
  1144.   
  1145.      This chapter contains general and installation information about the
  1146.   amiga-port of the GNU C compiler gcc.
  1147.   
  1148.   3.13.1 Current Version
  1149.   ----------------------
  1150.   
  1151.      The current version of gcc, further refered to as <gcc-current>, is
  1152.   2.5.8. Work is in progress for version 2.6 which will incldude a new
  1153.   version of the popular ixemul.library, the Unix system-calls emulation
  1154.   shared library, and a brand new C library avoiding gcc compiled programs
  1155.   to use ixemul.library.
  1156.   
  1157.   3.13.2 Requirements
  1158.   -------------------
  1159.   
  1160.      Any Amiga (ranging from A1000 upto A4000/40) will run amigados-gnu
  1161.   utilities. A minimum of 4MB memory is needed in order to compile
  1162.   small/medium projects. More memory will be needed for large projects,
  1163.   such as recompiling gcc itself, or programming C++. Gigamem is known to
  1164.   work with GCC so *maybe* less memory will work. But in this case, an
  1165.   MMU equipped Amiga (A3000,A4000/40) is necessary.  See 68EC0xx.
  1166.   
  1167.      A full installation, including C++/ObjC related files, inline
  1168.   headers, cbm-headers, (see Includes) roughly requires about 20 MB of HD
  1169.   space.
  1170.   
  1171.      Gcc will work under KS 1.2/1.3, but the full functionality is only
  1172.   available under KS 2.x+. A fast CPU (eg. 68030@25MHz or better) is also
  1173.   of help.
  1174.   
  1175.   3.13.3 Authors
  1176.   --------------
  1177.   
  1178.      Gcc and related GNU-software has been ported to the Amiga by the
  1179.   following folks: See How to get help.
  1180.            Gcc v2.2.2 port:   Markus Wild
  1181.            Gcc v2.3.3 port:   Markus Wild
  1182.            Gcc v2.4.5 port:   Philippe Brand, Lars Hecking, Fred Fish
  1183.            Gcc v2.5.0 and up: Philippe Brand, Fred Fish, Leonard Norrgard
  1184.        
  1185.            Ixemul.library:    Markus Wild, Leonard Norrgard, R. Luebbert
  1186.            Libnix:           Matthias Fleischer, Gunther Nikl
  1187.                Gerlib:            Gerhard Mueller
  1188.   
  1189.   3.13.4 Sources for Gcc
  1190.   ----------------------
  1191.   
  1192.      All GCC sources & binaries are available on:
  1193.   
  1194.     1. Aminet sites (wuarchive.wustl.edu and mirrors such as ftp.luth.se)
  1195.        in /pub/aminet/dev/gcc
  1196.   
  1197.     2. Ramses The Amiga Flying BBS:
  1198.                 +33-1-60037015  HST Dual v32 terbo 4800-21600
  1199.                     +33-1-60037713  SupraFax v32bis    4800-14400
  1200.                     +33-1-60037716  Tornado v22bis     1200-2400
  1201.        in Topic `Development', Area `Gcc' (are 156).
  1202.   
  1203.      GNU source code is available on:
  1204.   
  1205.     1. the same FTP site you've taken the binary distribution from
  1206.   
  1207.     2. gnu.prep.ai.mit.edu (18.71.0.38) in `/pub/gnu'
  1208.   
  1209.     3. Ramses The Amiga Flying BBS in Topic
  1210.        `AmigaUnix/Unix/Linux/NetBSD', Area `Gnu Source Code'
  1211.   
  1212.      These archives should contain everything necessary to get you going,
  1213.   they don't include sources for ixemul.library, which are available on
  1214.   Aminet sites in `/pub/aminet/dev/gcc/ixemsrc3947.tar.gz' (as of this
  1215.   writing, work is in  progress for the v40 version of ixemul.library,
  1216.   sources will be available on an Aminet site near you).
  1217.   
  1218.      As stated by Richard Stallman of the FSF:
  1219.   
  1220.      "The GPL says that any distribution of binaries must contain either
  1221.   the source code or a written offer to supply source code (see the GPL
  1222.   for details of what is required)."
  1223.   
  1224.   3.13.5 Inline Headers
  1225.   ---------------------
  1226.   
  1227.      The inline headers for gcc can be created from the original CBM fd
  1228.   files.  See Includes. See Pragmas. They can be created as follows:
  1229.   
  1230.        CLI> Assign INCLUDE: GCC:os-include
  1231.        CLI> Assign FD: INCLUDE:fd
  1232.        CLI> Makedir INCLUDE:inline
  1233.        CLI> cd USR:bin/geninline
  1234.        CLI> gen31
  1235.   
  1236.      This will create all inline-headers in `GCC:os-include/inline'.  If
  1237.   you have 2.0 headers, use gen20 instead, if you have 3.0, use gen30.
  1238.   OS3.1 (rev 40.13) inline headers are included with <gcc-current>. See
  1239.   Current Version.
  1240.   
  1241.      NOTE: perl scripts do not handle correctly AmigaDOS include files,
  1242.   which seems to mean they are somewhat broken. This needs some voluntary
  1243.   work ...
  1244.   
  1245.      There is also another way of generating inline headers, using
  1246.   fd2inline program:
  1247.   
  1248.        CLI> fd2inline <fd_file> <proto_file>
  1249.   
  1250.   3.13.6 Amiga Libraries
  1251.   ----------------------
  1252.   
  1253.      Amiga-style libraries, such as amiga.lib, cannot be read by gcc
  1254.   directly. They need to be converted into a gcc-readable format using
  1255.   hunk2gcc, the AmigaDOS object converter made by Markus Wild.
  1256.   
  1257.      To achieve this, simply grab a copy of latest amiga.lib (from
  1258.   Commodore Development Kit, see Includes) and make a new directory where
  1259.   you want your converted object files to go, cd into it, and enter
  1260.   
  1261.            hunk2gcc amiga.lib [..further libs if you like..]
  1262.   
  1263.      This generates an a.out object file for every program unit present
  1264.   in the hunk file (in this case, from amiga.lib).
  1265.   
  1266.      As the final step convert all those files into an a.out style
  1267.   library by issuing:
  1268.   
  1269.            ar qc libamiga.a obj.*
  1270.            ranlib libamiga.a
  1271.   
  1272.      The ranlib run builds a symbol table in the archive, and makes
  1273.   accesses to the library much faster.
  1274.   
  1275.      NOTE: As long as you make no AmigaDOs specific calls, you can create
  1276.   a dummy library using:
  1277.   
  1278.          cat "int dummy;" >dummy.c
  1279.          gcc -c dummy.c
  1280.          ar crv libamiga.a dummy.o
  1281.          mv libamiga.a gcc:lib
  1282.   
  1283.   3.13.7 Installation
  1284.   -------------------
  1285.   
  1286.      IMPORTANT NOTE FROM Philippe Brand:
  1287.   
  1288.      As this is FAQ, most often asked question about gcc-2.5.8 is: "I
  1289.   can't compile C++ programs, what's up ?"
  1290.   
  1291.      In fact, I've messed up gcc-2.5.8 distribution. Instead of 2.5.8
  1292.   versions of C++ and Objective-C compiler passes, 2.5.7 versions were
  1293.   included. You've got here 2 options.
  1294.   
  1295.      - rename lib/gcc-lib/amigados/2.5.7 to 2.5.8 - get gcc258ud.lha on
  1296.   Aminet, which contains proper 2.5.8 versions.
  1297.   
  1298.      From Aminet get also gcc258ud1.lha which contains some fixed
  1299.   libraries, headers etc...
  1300.   
  1301.      And DON'T forget to grab gcc258-readme.lha also from Aminet.
  1302.   
  1303.     1. If this is your first installation of GCC:
  1304.   
  1305.             CLI> cd Disk_with_lot_space:
  1306.             CLI> lha x gcc258-x.lha
  1307.   
  1308.        (where x stands for 1 through 4, 5 & 6 if you want also to have
  1309.        sources)
  1310.   
  1311.        Now from the Workbench, invoke GCC-Install. This is what people
  1312.        wanted, e.g. an Installer based configuration script for GCC.
  1313.   
  1314.        Thus you only have to unpack archives and the installer script will
  1315.        do the rest, creating environment variables, adding assigns to
  1316.        user-startup, copy library and handler.
  1317.   
  1318.        BTW:
  1319.   
  1320.        Installer and Installer project icon (c) Copyright 1991-93
  1321.        Commodore-Amiga, Inc.  All Rights Reserved.  Reproduced and
  1322.        distributed under license from Commodore.
  1323.   
  1324.     2. If you "upgrade" your gcc environment from v2.x.x, well just erase
  1325.        gcc directory then go back to step 1. Too many stuff have changed.
  1326.        Just make sure you've backuped all what you've added to the GCC
  1327.        tree before.
  1328.   
  1329.      Note that you MUST use ixemul.library revision 45 and NOT revision
  1330.   47, as the latter doesn't check for ENV:
  1331.   
  1332.      You need to have a 50.000 stack size in order to compile with GCC.
  1333.   This should be enough for most projects. Note than while recompiling
  1334.   gcc with itself it has takeen more than 245KB stack. Stack can grow due
  1335.   to source complexity. Don't be afraid of it.
  1336.   
  1337.      To use ar and/or ranlib, you should have a much larger stack, between
  1338.   200.000 and 300.000, depending on library size.
  1339.   
  1340.   3.13.8 How to get help
  1341.   ----------------------
  1342.   
  1343.      The current amiga-gcc-port maintainer is available:
  1344.   
  1345.            Philippe BRAND
  1346.            Fidonet: Ramses The Amiga Flying BBS 2:320/104.21
  1347.            Email:   phb@colombo.telesys-innov.fr (ONLY for personnal email).
  1348.            Ftp:     colombo.telesys-innov.fr:/pub/amigados-gnu
  1349.                     or /pub/incoming/uploads for uploads.
  1350.   
  1351.      There's also an amiga-gcc mailing list running in Finland.  See
  1352.   Mailing lists.  Philippe Brand will forward all questions to that list,
  1353.   but you'd be better off using it directly ;)
  1354.   
  1355.   4 Applications
  1356.   **************
  1357.   
  1358.      This chapter offers informations about major Applications.
  1359.   
  1360.   4.1 Text Editors
  1361.   ================
  1362.   
  1363.      Text Editors are programs allowing to enter and edit unformatted
  1364.   text.  Generally, this means text that is meant to be manipulated by
  1365.   machine, rather than human. Programmers use these to enter the text for
  1366.   compilers.  Since UNIX machines don't typically have word processors,
  1367.   most text processing starts with a text editor, then is filtered
  1368.   through a page layout system (TeX, for example) to produce attractive
  1369.   paper results.
  1370.   
  1371.   *Commercial Products*
  1372.        CygnusEd Professional and TurboText seem to be the main contenders
  1373.        in the professional realm. The Fred Fish disks contain dozens of
  1374.        other shareware text editors. A demo version of TurboText is on
  1375.        Fish disk 445.  A very old demo of CygnusEd is on Fish disk 95
  1376.        (testament to its lasting-power). In the following some freely
  1377.        distributable editors will be discussed.
  1378.   
  1379.   *Emacs*
  1380.        Gnu Emacs (the "G" is not silent) comes from Unix and is probably
  1381.        the king of editors - it's huge (about 1 Megabyte), feature-packed
  1382.        (it does windows and even contains a game!) and extensible (if you
  1383.        know lisp you can write new emacs functions and bind them to any
  1384.        key combination).  On the other hand, it may be too huge, its
  1385.        feature-ladenness is imposing, and its extensibility often means
  1386.        you can't use someone else's emacs configuration. Source: Aminet
  1387.        (directory `util/gnu').
  1388.   
  1389.   *Vi*
  1390.        The leaner, less configurable, non-extensible cousin to gnu emacs
  1391.        is vi (pronounced "vee eye"). Unix people like vi especially
  1392.        because you find it on *any* Unix machine. What you choose is
  1393.        personal preference, and will mark you for life. Vim is a good vi
  1394.        for the amiga, and is on Fish disk 591 or in the `util/gnu'
  1395.        directory of Aminet.
  1396.   
  1397.   *DME*
  1398.        Many Amiga programmers like DME. It's fast, fully configurable;
  1399.        menus may be created and any key may be mapped. It's much easier
  1400.        to learn DME than than Emacs or Vi. There are three different
  1401.        versions: AmokEd, DME and XDME. It's a matter of opinion which you
  1402.        prefer. (Oberon and Modula programmers like AmokEd because it's
  1403.        written in Oberon and supports AmigaOberon error messages, C
  1404.        programmers like DME or XDME.) Sources: Aminet (directory
  1405.        `util/edit'), Fish disk 776 (XDME) and 749 (AmokEd), AMOK 90.
  1406.   
  1407.   4.2 What word processors are there?
  1408.   ===================================
  1409.   
  1410.      A word processor is the typical application for writing notes,
  1411.   letters or reports on a computer. Unless you prepare newsletters on a
  1412.   weekly basis, your word procesor is probably your workhorse program.
  1413.   Thus choosing one you are comfortable with determines how comfortable
  1414.   you are with your computer. Word processors can offer a variety of
  1415.   features, and many can approach the sophistication required for Desktop
  1416.   Publishing (see DTP) but no one uses them for programming, for which
  1417.   text editors are more suited.
  1418.   
  1419.      One distinguishes between Wysiwyg programs (What you see is what you
  1420.   get) and page layout languages. Wysiwyg programs should be fast,
  1421.   comfortable and easy to use. Most people prefer them. The alternative
  1422.   is an approach that works similar to compilers. You feed text files to
  1423.   a a program that produces the layout which may be previewed on screen
  1424.   or printed. LaTeX takes this approach. See TeX. Lout is another such
  1425.   system which seems smaller, easier to learn and has full documentation
  1426.   included, but it is nonstandard.  Lout produces Postscript output. (I
  1427.   don't know if this is an advantage or disadvantage. ;-) See Postscript.
  1428.   Both programs are freely distributable.
  1429.   
  1430.      There are a lot of wysiwyg programs, but only commercial products:
  1431.   FinalWriter, Final Copy II, Wordworth, Word Perfect, AmiWrite,
  1432.   Beckertext II, Maxon Word and many others. I don't dare to recommend
  1433.   any.  All I can say is: Give yourself time to make a selection.
  1434.   
  1435.   4.3 Desktop Publishing
  1436.   ======================
  1437.   
  1438.      These programs offer features lacking in word processors, usually
  1439.   tailored to flexible arrangement of text, but often don't provide all of
  1440.   the text manipulation that a good word processor provides. The best
  1441.   desktop publishing programs strive to provide the features of both,
  1442.   just as the best word processors strive to provide the features of
  1443.   desktop publishing programs. Microsoft Word (Mac, PC) is a good example
  1444.   of a word processing program that offers many page layout feature.
  1445.   Framemaker (UNIX, Macintosh, DOS, etc.) is an example of a desktop
  1446.   publishing system that offers most needed word processing functions. As
  1447.   yet, no Amiga program has bridged the gap, though the main word
  1448.   processors are coming close. (On the other hand, even many
  1449.   sophisticated programs don't support typesetting mathematics, tables,
  1450.   producing bibliographies, indexes, or cross-references. The page layout
  1451.   languages do, and programs like Frame are improving their support of
  1452.   such features.) Unless you need to prepare fancy newsletters or
  1453.   promotional literature, a word processing program is probably enough.
  1454.   See Word Processors.
  1455.   
  1456.      There are not yet any freely distributable wysiwyg desktop publishing
  1457.   systems. Commercial products are ProPage and PageStream. They have been
  1458.   playing leapfrog for the past few years. It appears that PageStream 3.0
  1459.   is about to leap ahead. A more detailed description of these products
  1460.   and their differences is welcome. Both programs' list prices are $299.
  1461.   Student discounts are available (approx 40% discount.)
  1462.   
  1463.   4.4 What is TeX and where can I get it?
  1464.   =======================================
  1465.   
  1466.      TeX is a very powerful wordprocessing system. It can display
  1467.   mathematical formulas or complex tables as well as function graphs,
  1468.   creates indices, contents and many other things. Its greatest advantage
  1469.   is that it is freely distributable (TeX, not the previewers and the
  1470.   printer drivers!) and that you find TeX all over the world on every
  1471.   computer family. Its greatest disadvantage is that it isn't very handy
  1472.   (works similar to a compiler) and it isn't wysiwyg. But many people
  1473.   like it. (BTW: This document is written using TeX. 8-) See Word
  1474.   Processors.
  1475.   
  1476.      There are two major implementations on the Amiga. The first one,
  1477.   Amiga-TeX, from Thomas Rockicki and Radical Eye software is commercial.
  1478.   It is said to be excellent and his owners seem to be very satisfied.
  1479.   But it costs at least 200$.
  1480.   
  1481.      I recommend PasTeX, a freely distributable version. People seem to
  1482.   have problems installing PasTeX, especially the font loading and
  1483.   generation (It's a quite complex program.) but I did not here anyone
  1484.   upset once it was installed. (A friend with knowledge of TeX helps
  1485.   immensely.) A few words should be said what you need:
  1486.      * 5 disks containing the TeX-compiler itself
  1487.   
  1488.      * 2 disks containing MetaFont
  1489.   
  1490.      * Nothing more Many people ask for fonts. They are included in the
  1491.   MetaFont-package and can get compiled by you. All you need to do is
  1492.   setting up your TeX-system in the right way which is described in the
  1493.   documentation. Please note that the PasTeX disks are compressed using
  1494.   the program Zoom. (see Endings) Sources: FTP at `ftp.uni-passau.de',
  1495.   directory `/pub/amiga/tex/PasTeX1.3' and the Fish CDs.
  1496.   
  1497.   4.5 Are there any Postscript interpreters?
  1498.   ==========================================
  1499.   
  1500.      PostScript is a programming language designed to be used to describe
  1501.   printing on pages. Apple helped make PostScript popular by selling
  1502.   printers with built in PostScript interpreters. Many programs have
  1503.   evolved to produce PostScript programs as their output, making
  1504.   PostScript the lingua franca of printing. Until recently, in order to
  1505.   print a PostScript file, you had to have a relatively expensive laser
  1506.   printer. The development that changed this was the software PostScript
  1507.   interpreter. These programs allow your computer to interpret PostScript
  1508.   programs, and produce the matrix of dots to send to your normal
  1509.   graphics printer.
  1510.   
  1511.      One of the benefits of PostScript is that it is resolution
  1512.   independent.  What this means is that it can support the highest
  1513.   resolution of your device - and that you can reasonably preview
  1514.   PostScript on a low resolution screen.
  1515.   
  1516.      There are two free PostScript interpreters for the Amiga. Post and
  1517.   Ghostscript. Post comes as an Amiga shared library along with front
  1518.   ends for previewing to the screen and printing. This structure allows
  1519.   others to write programs that can show PostScript images on screen. In
  1520.   fact, AmigaTeX uses Post's library to support incorporation of
  1521.   PostScript into documents.  Ghostscript similarly comes in two
  1522.   programs, but not as a shared library.  Ghostscript is the rendering
  1523.   engine, and Ghostview is the front end.  Sources: Aminet (directorys
  1524.   `text/print' and `text/dtp'), Fish disk 669
  1525.   
  1526.   5 How about Graphics?
  1527.   *********************
  1528.   
  1529.      Graphics is one of the major strengths of the Amiga. Why don't we
  1530.   have more answers here? :-(
  1531.   
  1532.   5.1 What are chunky and planar displays?
  1533.   ========================================
  1534.   
  1535.      Simply put, the terms `chunky' and `planar' (short for `bitplanar')
  1536.   refer to different ways of storing graphics information in a computer's
  1537.   memory. They are rather easy to understand, as far as things go, but
  1538.   incredibly difficult to explain:
  1539.   
  1540.      Computer images are arranged as a grid of pixels, each of which can
  1541.   be thought of as a number representing the color number of the pixel,
  1542.   sort of like a paint-by-numbers scheme.  For example, here's a
  1543.   simplified example image, in four colors:
  1544.   
  1545.           00302132
  1546.   
  1547.      The Amiga stores this image in a `bitplane' mode. That is, it is
  1548.   represented by several planes of bits (binary digits, 1s or 0s). This
  1549.   is a four-color image, so each color number could be represented by two
  1550.   bits.  Therefore there are two bitplanes:
  1551.   
  1552.           00100110    Here's bitplane 0
  1553.           00101011    And here's bitplane 1
  1554.           --------    Now, let's add them up, binary style:
  1555.           00302132
  1556.   
  1557.      Which is the final image. If the image was in two dimensions, it
  1558.   would truly be composed of bit planes. However, I'd need three
  1559.   dimensions to show multiple bitplanes overlayed, and therefore for
  1560.   simplicity we're working in one dimension (which is all we need).
  1561.   
  1562.      Now, there's another way of storing this image.  How about if we
  1563.   localize the bit data in little chunks?
  1564.   
  1565.           00 00 11 00 01 10 11 01 = 00302132
  1566.   
  1567.      This is the principle of the `chunky' pixel mode.
  1568.   
  1569.      Both methods of image storage are perfectly logical, and no one can
  1570.   say that one is better than the other. However, there are certain
  1571.   technical aspects which cause certain advantages and disadvantages.
  1572.   
  1573.      First, if you've seen colored text scroll on your Amiga, you know
  1574.   there is a bit of "flicker" that arises. Specifically, what happens is
  1575.   that while the text is scrolling, its color temporarily changes to
  1576.   something completely different. What's happening is that the computer's
  1577.   moving several bitplanes of data while the raster (monitor electron
  1578.   gun) is sweeping across the screen. What that means is that, if the
  1579.   raster catches the data while it's being moved, you can end up with some
  1580.   bitplanes being moved and some not. What if we filled bitplane 1 in the
  1581.   example above with 0s? Instantly all the 3s become 1s, and the 2s
  1582.   become 0s! This is what causes "flicker" when certain colors are
  1583.   scrolled. By contrast, if a chunky pixel display is caught while
  1584.   scrolling, all we see is a partially-scrolled image; the colors are
  1585.   preserved (since their units are the small ones).
  1586.   
  1587.      That's a disadvantage to planar pixels, but what about chunky pixels?
  1588.   Well, recall that a computer organizes information in terms of 8 bit
  1589.   bytes. These groups are static; you cannot decide to all of a sudden
  1590.   organize data in terms of three bytes or something! Therefore, when
  1591.   using chunky pixels, things get complicated if we decide to use a
  1592.   nonconvenient number of bits per pixel. In practice, the 8-bit
  1593.   (256-color) mode, and 24-bit (16 million color) modes are the most
  1594.   common candidates for chunky pixel displays.
  1595.   
  1596.      Finally, certain effects can be accomplished with the different
  1597.   systems.  Bitplanar mode is particularly useful for things like shadows
  1598.   (where an extra bitplane is set with 1s instead of 0s), and chunky mode
  1599.   is great for perspective and "mapping" (since the data for each pixel is
  1600.   localized in a single "chunk"). The latter advantage makes chunky pixel
  1601.   mode really great for games, and is what made Wolfenstein 3-D possible.
  1602.   
  1603.      We all know that Amigas use the bitplane system for storing images.
  1604.   However, the Macintosh and PC(VGA) both use chunky pixel modes. While
  1605.   we can optimize our RAM usage with "bizarre" modes like 8- and
  1606.   128-color, they gain the advantages of non-flicker scrolling, and the
  1607.   programming simplicity of just writing a byte where you want the pixel
  1608.   to go.
  1609.   
  1610.      The difference between the two modes becomes problematic in things
  1611.   like emulation. EMPLANT has a "chunky to planar" routine which it uses
  1612.   to convert a Macintosh display into an Amiga one. "Chunky to planar"
  1613.   routines are also useful for getting chunky-inclined things to run on
  1614.   Amigas (see TMAPDemo, rotdemo). On a side note, there was some
  1615.   confusion as to what EMPLANT used the MMU for with regard to chunky to
  1616.   planar. The MMU itself is incapable of performing the algorithm for the
  1617.   conversion; rather, it is used to detect what portions of the display
  1618.   memory are updated from the Mac side, and therefore the processor is
  1619.   saved from having to perform the chunky to planar conversion for the
  1620.   entire display.
  1621.   
  1622.      I sincerely hope that helped clear up most of the mystery concerning
  1623.   the terms "Chunky" and "Planar"!
  1624.   
  1625.      (Joseph Luk, jluc@eis.calstate.edu)
  1626.   
  1627.   5.2 What is doublebuffering?
  1628.   ============================
  1629.   
  1630.      Don't be ashamed if you haven't a clue as to what this is. It's
  1631.   rather simple, really. Imagine you wanted to animate something by
  1632.   drawing out each frame. Now imagine you had only one piece of paper.
  1633.   Even if you drew pretty fast, it would be difficult to see what the
  1634.   animation looks like because you'd have to erase the frame you just
  1635.   drew, in order to draw the next one!
  1636.   
  1637.      What if you had two pieces of paper? Why, then, you could see the
  1638.   difference between two adjacent frames. First you'd draw your first
  1639.   frame on the first piece of paper, then you'd draw the second frame on
  1640.   the other piece.  Then you'd erase the picture on the first piece of
  1641.   paper, and draw in the third frame. Then you'd erase the picture on the
  1642.   second piece of paper, and draw in the fourth frame, and so forth.
  1643.   
  1644.      This is the principle of doublebuffering. The computer shows you the
  1645.   picture it just drew, then turns around and draws the next one. It then
  1646.   swaps the picture in front of you with the one it just drew, and
  1647.   repeats the process. The result is a smooth animation, because you
  1648.   never need to see the computer draw; all you see is each finished
  1649.   product.
  1650.   
  1651.      (Joseph Luk, jluc@eis.calstate.edu)
  1652.   
  1653.   5.3 What monitors will work on my Amiga 1200/4000?
  1654.   ==================================================
  1655.   
  1656.      Monitors can be classified after the horizontal scan frequency they
  1657.   require.  TVs, as well as C='s 1084 monitor, need frequencies around 15
  1658.   kHz. VGA/SVGA need approx. 30 kHz. Multisync monitors can take many
  1659.   frequencies.
  1660.   
  1661.      In short: You can use any monitor you want with an A1200. BUT:
  1662.   
  1663.      - If you use a regular VGA/SVGA monitor, you can only use a few
  1664.        display modes (like DblPAL, DblNTSC and/or Productivity). I.e.
  1665.        (320|640) x (256|512|1024) for DblPAL. This is great for Workbench
  1666.        and all "serious" utilities (DTP etc), but don't expect any games
  1667.        to work... they don't use your preferences, just take over the
  1668.        machine and assume a 15 kHz monitor. Also, you cannot utilize the
  1669.        "Early Startup Control" screen (you know, disable cache, and that
  1670.        stuff), which also requires a 15 kHz monitor. Furthermore, VGA
  1671.        monitors don't have speakers. And the VGA-type modes don't support
  1672.        Genlocks. But for a lot of "serious" work, a VGA monitor is quite
  1673.        adequate.
  1674.   
  1675.      - You already know what happens with a 15 kHz monitor; the
  1676.        flickering in Interlace mode. A small tip: Try to use NTSC instead
  1677.        of PAL. This increases the refresh rate from 25 Hz to 30 Hz, at
  1678.        the expense of lower vertical resolution (482 lines maximum). The
  1679.        NTSC and PAL modes aren't as bad as many people think. If your
  1680.        monitor has a lot of phosphorous (long afterglow), PAL Laced can
  1681.        be quite OK, and it gives you a resolution of 1448x566 in
  1682.        SuperHiRes. That's the highest resolution currently supported on
  1683.        AGA Amigas, in _any_ display mode.
  1684.   
  1685.      - A Multisync gives you the best of both worlds. The new 1940 and
  1686.        1942 monitors from C= are quite OK, although rather cumbersome to
  1687.        use... The h/v size and offset must be set manually each time you
  1688.        switch display mode.  (1)
  1689.   
  1690.      For a VGA/SVGA or Multisync monitor, you'd need a little shiny box
  1691.   which gives you the standard 15-pin "D" connector. It costs around $15.
  1692.   
  1693.      There are other alternatives... like the "AmiVGA" box ($50 or so),
  1694.   which I think is a cheapo version of the Flicker Fixer. (But it's
  1695.   really a shame to use this on an AGA Amiga.)
  1696.   
  1697.      Also, you can get a VGA monitor, and hook up your TV to the
  1698.   composite or RF port on the Amiga - one monitor for games, one for
  1699.   serious stuff.
  1700.   
  1701.      (Per Espen Hagen, per.e.hagen@ffi.no)
  1702.   
  1703.      ---------- Footnotes ----------
  1704.   
  1705.      (1)  A patch is available on Aminet for Kickstart 3.0 to do this
  1706.   without manual actions in the file `os30/util/Monitor30Patch.lha'.
  1707.   
  1708.   5.4 How do I switch between PAL and NTSC?
  1709.   =========================================
  1710.   
  1711.      PAL and NTSC are two different video standards, the former being
  1712.   European, and the latter being American. PAL has a slightly taller
  1713.   screen (256 lines non-interlaced, non-overscanned) as opposed to NTSC
  1714.   (200 lines), so if you see the bottom portion of a program's screen
  1715.   getting cut off on your American machine, chances are the program was
  1716.   written for PAL, and is running on your shorter NTSC screen. PAL and
  1717.   NTSC differences are somewhat less important to European users; since
  1718.   their machines default to PAL, running an NTSC program is no more than
  1719.   a minor annoyance having the screen only appear in the top portion of
  1720.   the display.
  1721.   
  1722.      Therefore, for us NTSC folks, switching into PAL mode becomes
  1723.   important to avoid loss of some picture on Euro Demos, etc.
  1724.   
  1725.      First, the most common misconception about switching between PAL and
  1726.   NTSC is that you need a Multiscan or special monitor for such a purpose.
  1727.   Not so! Just about any monitor can handle the minor signal difference
  1728.   between PAL and NTSC (50Hz vertical refresh versus 60Hz). The 108x,
  1729.   19xx, and 20xx series, and even most TVs, can display both PAL and NTSC.
  1730.   Sometimes it is necessary to perform minor tweaking of vertical hold
  1731.   and/or v. size on your monitor to achieve full display, though this is
  1732.   trivial.
  1733.   
  1734.      What IS needed to switch between PAL and NTSC in software, is a
  1735.   "Fatter" (1MB) Agnus or better. If your system has more than 512K of
  1736.   CHIP RAM (use the avail command to find out) you have this chip. If you
  1737.   do not, ou can still construct a hardware switch (see below).
  1738.   
  1739.      The following directions assume you're an NTSC user who wants to
  1740.   switch into PAL mode, but the procedure for going from PAL to NTSC is
  1741.   much the same.
  1742.   
  1743.      The most common use of switching into PAL is for self-booting games,
  1744.   demos, etc.  The best way to accomplish this on pre-3.0 systems is to
  1745.   use Chris Hames' Degrader program (most recent version: 1.30). Once you
  1746.   have procured this program, the switch is as simple as selecting
  1747.   "50Hz", and "50Hz System", then installing the program's ROMTag (little
  1748.   program that runs at boot-time) by pressing the "Survive Reset(s)"
  1749.   button.
  1750.   
  1751.      AmigaDOS 3.0 added a PAL/NTSC switch feature to its Boot Menu, and
  1752.   all you need to do in order to access this is hold down both mouse
  1753.   buttons as the computer boots. Select Display Options, Display
  1754.   Mode/PAL, and then Boot. If the program still fails to go into PAL mode
  1755.   (Zool is one I've found), you may wish to get Degrader anyway and try
  1756.   that.
  1757.   
  1758.      Software PAL/NTSC switching is easy and painless. Some people have
  1759.   gone even further by installing hardware PAL/NTSC switches. This
  1760.   results in a system which even the most nasty hardware-banging programs
  1761.   can't bring to its original configuration (if it has been switched).
  1762.   The procedure is simple - most Amigas have jumpers already - but beyond
  1763.   the scope of this document.
  1764.   
  1765.      Therefore, if your screen is too short or cut off, seek the different
  1766.   screen mode. You'll "see new horizons", literally!
  1767.   
  1768.      (Joseph Luk, jluc@eis.calstate.edu)
  1769.   
  1770.      (1)
  1771.   
  1772.      ---------- Footnotes ----------
  1773.   
  1774.      (1)  PAL/NTSC switching with a MultiSync monitor is possible on 2.0+
  1775.   and easily accomplished by moving the PAL monitor type to (or NTSC, as
  1776.   applicable, I have them both in) the Devs/Monitors drawer (from the
  1777.   Storage/Monitors drawer), reboot, then go into the Prefs drawer and
  1778.   select the ScreenMode program. You will see at least two PAL modes
  1779.   available (PAL and PAL Interlaced). Simply select one of the (usually
  1780.   non-interlaced for demos) and select "Use". All windows on the Workbench
  1781.   will close, the video mode will change, and then the windows will
  1782.   reopen - that simple!
  1783.   
  1784.      Allen J. Newton, anewton@alturia.abq.nm.us
  1785.   
  1786.   6 Emulators
  1787.   ***********
  1788.   
  1789.      What? The Amiga isn't good enough? You really want it to be another
  1790.   machine?  Well, look here...
  1791.   
  1792.   6.1 Can I run Unix on my Amiga?
  1793.   ===============================
  1794.   
  1795.      Actually there are three Unix versions on the Amiga. All of them
  1796.   need at least 68030 (see 68EC0xx), probably a 68040 in the near future
  1797.   and seem to have problems with many hard-drive-controllers. You should
  1798.   have a good look into the documentation before installing it. Unix
  1799.   needs much resources, say at least 10Mb RAM and a 150Mb Unix-partition
  1800.   on the hard-drive.
  1801.   
  1802.     1. Commodore offered a System V Unix in the past. It contained TCP/IP,
  1803.        X11 and other software and seemed to make a good job, but it was
  1804.        expensive and after all Commodore has dropped developing it.
  1805.        Commodore-Unix needs a streamer because it is distributed on tapes.
  1806.   
  1807.     2. A Linux port is prepared. But actually there is not very much than
  1808.        the kernel. Specialists might like to use it, but it cannot be
  1809.        recommended for now. Linux is freely distributable. Sources:
  1810.        `ftp.uni-paderborn.de', directory `/pub/amiga/linux' or
  1811.        `ftp.uni-erlangen.de', directory `/pub/Linux/MIRROR.tsx-11/680x0'.
  1812.   
  1813.     3. NetBSD is freely distributable too. Like Linux it isn't ready for
  1814.        now, but it seems to make big steps. Most GNU software is said to
  1815.        run, especially emacs and gcc. I think it's worth to have a look
  1816.        on it. Sources: `ftp.uni-paderborn.de', directory
  1817.        `/pub/amiga/NetBSD' or `ftp.uni-erlangen.de', Directory
  1818.        `/pub/amiga/unix/NetBSD-regensburg'.
  1819.   
  1820.   6.2 Is it possible to use the Amiga as X11 terminal?
  1821.   ====================================================
  1822.   
  1823.      Yes, it is. There are two different packages available:
  1824.   
  1825.      GfxBase offers a commercial version which is said to be excellent,
  1826.   but expensive. The distribution includes different window managers
  1827.   andclients.  A demo version is on Aminet.
  1828.   (`gfx/x11/GfxBase-X11-Demo.lha')
  1829.   
  1830.      DaggeX is freely distributable and probably not finished yet. (It
  1831.   calls itself version 0.91.) Source: Aminet, `gfx/x11/DaggeX-0.91.lha'
  1832.   and `gfx/x11/twm_930531.lha'.
  1833.   
  1834.   7 Miscellaneous
  1835.   ***************
  1836.   
  1837.      This last chapter contains some questions that don't fit in the
  1838.   chapters above.
  1839.   
  1840.   7.1 Is there any unix version of LhA?
  1841.   =====================================
  1842.   
  1843.      See Endings.
  1844.   
  1845.   7.2 What are files ending with ...?
  1846.   ===================================
  1847.   
  1848.      Most endings on FTP sites or Fish disks tell you that the file is
  1849.   compressed and/or is an archive containing more than one file. Some
  1850.   programs even archive whole disks. Frequently found endings and
  1851.   programs to handle the related files are:
  1852.   *.sfx*
  1853.        Compressed archives which are included in an executable program:
  1854.        Just call the program and it will extract itself (sfx = self
  1855.        extract)
  1856.   
  1857.   *.lha*
  1858.   *.lzh*
  1859.        Compressed archives; recommended: LhA (`util/arc/LhA_e138.run' on
  1860.        Aminet  or Fish disk 715) or Lx (`util/arc/lx100.lha' on Aminet),
  1861.        Unix version available (`misc/unix/lha-1.00.tar.Z')
  1862.   
  1863.   *.dms*
  1864.        Disks compressed using DMS (`util/arc/dms111.sfx' on Aminet or
  1865.        Fish disk 406)
  1866.   
  1867.   *.zom*
  1868.        Disks compressed using Zoom (`util/arc/Zoom_5.4.lha' on Aminet,
  1869.        Fish disk 682); an older version which you probably need for
  1870.        uncompressing PasTeX is found on Fish disk 459.
  1871.   
  1872.   *.zoo*
  1873.        Compressed archive; recommended: Zoo (`util/arc/zpp2-10.lzh' on
  1874.        Aminet or Fish disk 527)
  1875.   
  1876.   *.Z*
  1877.   *.z*
  1878.   *.gz*
  1879.        Compressed files; recommended gzip (`util/pack/gzip124x.lha' on
  1880.        Aminet), note that this are Unix files in most cases
  1881.   
  1882.   *.tar*
  1883.        Acrhive; recommended: tar (`util/arc/tar.lha' or
  1884.        `util/arc/gtar10.lha' on Aminet or Fish disk 445), note that tar is
  1885.        a Unix archiver and you often find soething like `.tar.Z'.
  1886.   
  1887.   *.arj*
  1888.        Compressed archive; recommended unarj (`util/arc/unarj-0.5.lha' on
  1889.        Aminet)
  1890.   
  1891.   *.zip*
  1892.        Compressed archive; recommended UnZip (`util/arc/unzip-5.1.lha' on
  1893.        Aminet), note that this are MS-Dos archives in most cases
  1894.   
  1895.   7.3 Is there a Stacker-like utility to pack my hard drive?
  1896.   ==========================================================
  1897.   
  1898.      XFH does a good job. It operates as a handler and uses the
  1899.   XPK-libraries, so you have different compression modes (NUKE is a good
  1900.   choice) and possibly even more in the future. The only disadvantage is,
  1901.   that the size of a file is limited by RAM: Don't use it with less than
  1902.   2MB of RAM.
  1903.   
  1904.      XPKDisk by Olaf 'Rhialto' Seibert is another stacker program that
  1905.   takes advantage of the variety of XPK libraries available. Unlike other
  1906.   harddisk compressors it does not compress the files, but creates a
  1907.   pseudo partition and stores the whole tracks as compressed files on
  1908.   your harddisk. Its major advantage is that it does not limit the
  1909.   maximum file size, because it works similar to trackdisk.device and
  1910.   therefore does not need too much temporary storage. But be careful:
  1911.   Never try to optimize an xpkdisk partition using ReOrg. It will trash
  1912.   your virtual partition.
  1913.   
  1914.      Another possibility is EPU. It's shareware and should offer the same
  1915.   as XFH, but without limiting the file size.
  1916.   
  1917.      Sources: Aminet, directory `util/pack', Fish disks 754 (XFH) and 858
  1918.   (EPU)
  1919.   
  1920.   7.4 Where do I get Fish disk xxx?
  1921.   =================================
  1922.   
  1923.      Those FTP servers have that much space (or a CD-Rom) to have all
  1924.   fish disks available online:
  1925.        ftp.isca.uiowa.edu      (USA, directory `/amiga/fx/fxxx')
  1926.        ftp.hawaii.edu          (USA, directory `/pub/amiga/fish')
  1927.        ftp.dfv.rwth-aachen.de  (Germany, directory `/pub/amiga/fish')
  1928.        ftp.funet.fi            (Finland, directory `/pub/amiga/fish')
  1929.   
  1930.   Note that the CD-Rom's are not always mounted. See FTP.
  1931.   
  1932.      Another possibility would be to ask your local dealer. :-)
  1933.   
  1934.   7.5 What is MUI and where do I find it?
  1935.   =======================================
  1936.   
  1937.      MUI is a set of shared libraries which are used to build a
  1938.   comfortable GUI (`Graphical user interface'). The general idea of MUI
  1939.   is that the programmer determines only the logical structure of the GUI
  1940.   and the look (Font, Size, Windows on Workbench, Public Screen, own
  1941.   Screen, ...) is determined by the user only. From the programmers point
  1942.   of view using MUI is simpler than `gadtools.library' but much more
  1943.   powerful. On the other hand MUI interfaces are slower than
  1944.   GadTools-Interfaces, especially on old 68000 machines.
  1945.   
  1946.      MUI is found in two archives, one for developers only and one for
  1947.   users. Source: Aminet, `dev/misc'.
  1948.   
  1949.   8 Where and how do I get software and other informations?
  1950.   *********************************************************
  1951.   
  1952.      Three questions arise in this context: Which programs can be found,
  1953.   where are they and how to get them and transfer them home?
  1954.   
  1955.   8.1 Files and databases on freely distributable software
  1956.   ========================================================
  1957.   
  1958.      Of course you need to know where you find things. Many good choices
  1959.   are listed in this paper, as I hope. Other sources are:
  1960.   
  1961.   *AmigaSciSchool*
  1962.        is a list of software and where you find it in Ascii format. It is
  1963.        posted monthly to the newsgroups `comp.sys.amiga.applications',
  1964.        `comp.unix.amiga', and `news.answers'. Additionally you will find
  1965.        it on Aminet sites (`text/doc/AmigaSciSchool-4.01'). It handles
  1966.        everything listed here and many more, for example GNU software,
  1967.        libraries (linked and shared), shells, Unix commands, educational
  1968.        and scientific software and much more.
  1969.   
  1970.   *FishCon*
  1971.        are lists of the Fish disk contents. (`fish/doc/fishcon-???.lzh' on
  1972.        Aminet)
  1973.   
  1974.   *FishXref*
  1975.        is a cross reference list of the Fish contents.
  1976.        (`fish/doc/fishxref-???.lzh' on Aminet) FishXref and Fishcon are in
  1977.        Ascii format.
  1978.   
  1979.   *KingFisher*
  1980.        A Fish disk database, (`fish/doc/Kingfisher1_30.lha', which is the
  1981.        program and `fish/doc/KFData850.lha' ,which contains the data, on
  1982.        Aminet or Fish disk 863) allows search by name and context. See
  1983.        Fish.
  1984.   
  1985.   8.2 A collection of tests
  1986.   =========================
  1987.   
  1988.      `Comp.sys.amiga.reviews' is a moderated newsgroup where tests of
  1989.   soft- and hardware, books and anything else relevant to the Amiga are
  1990.   posted. Its always a good idea to check this newsgroup for a review, if
  1991.   you are interested in something special. Of course you always find only
  1992.   the latest reviews, but the older postings are available per FTP from
  1993.   `math.uh.edu', Directory `/pub/Amiga/comp.sys.amiga.reviews' or on the
  1994.   Fish CDs.
  1995.   
  1996.   8.3 Getting files from a FTP server
  1997.   ===================================
  1998.   
  1999.      Things are easy for those who have access to the Internet and a
  2000.   program called FTP (File Transfer Program). Nearly all Unix computers
  2001.   have it, but not all of them allow the use of FTP.
  2002.   
  2003.      FTP allows you to gain access to some other machines and store and/or
  2004.   retrieve files. Normally one needs an acoount on the remote machine to
  2005.   use it, bat a number of machines have a setup that allows everybody to
  2006.   log in as the user `ftp' or `anonymous', so anybody may get files from
  2007.   them. The most important of this servers are the Aminet servers, which
  2008.   mirror each other and hence should have the same files. They are the
  2009.   best choice if you are looking for Amiga software. Aminet hosts are
  2010.        USA (MO)     ftp.wustl.edu           128.252.135.4
  2011.        USA (CA)     ftp.cdrom.com           192.153.46.2
  2012.        USA (TX)     ftp.etsu.edu            192.43.199.20
  2013.        Scandinavia  ftp.luth.se             130.240.18.2
  2014.        Germany      ftp.uni-kl.de           131.246.9.95
  2015.        Germany      ftp.uni-erlangen.de     131.188.1.43
  2016.        Germany      ftp.cs.tu-berlin.de     130.149.17.7
  2017.        Germany      ftp.uni-paderborn.de    131.234.2.32
  2018.        Germany      ftp.uni-oldenburg.de    134.106.40.9
  2019.        Germany      ftp.coli.uni-sb.de      134.96.68.11
  2020.        Switzerland  ftp.eunet.ch            146.228.10.16
  2021.        Switzerland  litamiga.epfl.ch        128.178.151.32
  2022.        UK           ftp.doc.ic.ac.uk        146.169.2.1
  2023.      All these mirrors have a directory `/pub/aminet', where you will find
  2024.   much stuff. Please use a mirror close to you! Some other important hosts
  2025.   are
  2026.        ftp.funet.fi             (Finland)
  2027.        ftp.isca.uiowa.edu       (USA)
  2028.        ftp.hawaii.edu           (USA)
  2029.        ftp.cso.uiuc.edu         (USA)
  2030.        ftp.dfv.rwth-aachen.de   (Germany)
  2031.      Note that grind, aachen and erlangen have the full collection of Fish
  2032.   disks available! See Fish disk xxx.
  2033.   
  2034.      To connect to a special host (ftp.uni-erlangen.de for example), you
  2035.   should type
  2036.        ftp ftp.uni-erlangen.de
  2037.   
  2038.   The host answers by requesting your login. You should type
  2039.        ftp
  2040.   
  2041.   No you are asked for a password. Please type your Email address here, if
  2042.   you have one. If not, use the password ftp.
  2043.   
  2044.      Now you're inside the host. There is a number of commands you may
  2045.   execute here. The most important are:
  2046.   *?*
  2047.        Prints the help text of the FTP command. Additionally you may type
  2048.        *? command* to get information on a special command.
  2049.   
  2050.   *bin*
  2051.        Tells the FTP program that you whish to transfer binary files. It
  2052.        is always a good choice to type bin as the very first command!
  2053.        Files you load without the bin command can be corrupt.
  2054.   
  2055.   *get <file>*
  2056.        Loads the given file from the host. On most Unix machines you can
  2057.        type something like `get file.txt -' or `get file.txt |more' to
  2058.        show a text on the screen. Note that there *must not* be any blank
  2059.        between the | and the word more!
  2060.   
  2061.   *mget <pat>*
  2062.        Loads the given files. pat may contain Unix style like wildcards.
  2063.   
  2064.   *put <file>*
  2065.   *mput <pat>*
  2066.        Like get and mget, but transfer files from you to the remote host.
  2067.        This is in most cases not allowed, except for a special directory
  2068.        called `incoming'. You can place files here which you want to make
  2069.        public.
  2070.   
  2071.   *cd <dir>*
  2072.        Like the usual cd command. The commands get, mget, put, mput, dir
  2073.        and ls refer to the current working directory.
  2074.   
  2075.   *dir [<dir>]*
  2076.   *ls [<dir>]*
  2077.        Like `list' and `dir' on the Amiga. Note that the FTP-dir
  2078.        corresponds to the Amiga-list!
  2079.   
  2080.   *bye*
  2081.        Leaves the FTP program.
  2082.   
  2083.      When you have used FTP for the first times you will notice, that you
  2084.   always begin with executing the same steps:
  2085.     1. Type the login (ftp in most cases)
  2086.   
  2087.     2. Type the password (your mail address in most cases)
  2088.   
  2089.     3. Enter the bin command
  2090.   
  2091.     4. Change the current working directory (`/pub/aminet' for example)
  2092.           This may get executed automatically. What you need is a file
  2093.   called `.netrc' in your home directory. Note that it needs to be
  2094.   protected against others! The FTP program doesn't use it, if it can be
  2095.   read by anything else than you. (Protection is set using the command
  2096.   `chmod go-rwx .netrc'.) The .netrc file contains some entries for your
  2097.   most favourite FTP sites, each separated by empy lines. A typicel entry
  2098.   may look like this:
  2099.        machine ftp.uni-erlangen.de
  2100.        login ftp
  2101.        password <your mail address> or <ftp>
  2102.        macdef init
  2103.            bin
  2104.            cd pub/aminet
  2105.      Note that on some machines it is possible to use the machine name
  2106.   `default' which meets all machines not listed in .netrc.
  2107.   
  2108.   8.4 Getting files from a Mail server
  2109.   ====================================
  2110.   
  2111.      Another way to get files is to use a mail server. This assumes that
  2112.   you can send mail to Internet addresses and get mail from Internet
  2113.   hosts. It works by sending a mail to the server specifying some
  2114.   commands, for example send commands for the files you want. Important
  2115.   mail servers are
  2116.        ftpmail@decwrl.dec.com
  2117.        mailserver@nic.funet.fi
  2118.        ftp-mailer@ftp.informatik.tu-muenchen.de
  2119.        mrcserv@janus.mtroyal.ab.ca
  2120.        mail-server@ftp.cs.tu-berlin.de
  2121.        mail-server@rtfm.mit.edu
  2122.   
  2123.   The most important commands are:
  2124.   *Help*
  2125.        Tells the server that you wish to get an Ascii file containing
  2126.        detailed explanation how to use the server.
  2127.   
  2128.   *Limit <number>*
  2129.        Specifys that you wish to get not more than <number> Kbytes per
  2130.        mail.  Larger files get splitted into small pieces of at most
  2131.        <number> Kbytes which are sent as separate mails each. Note that
  2132.        the mails may get larger because of overhead.
  2133.   
  2134.   *Cwd <dir>*
  2135.        Sets the current working directory to <dir>. This directory is
  2136.        used by the commands send and dir.
  2137.   
  2138.   *Index*
  2139.        will return a list of files and/or directories that the server
  2140.        offers. Note that this may be *very* large!
  2141.   
  2142.   *Index <item>*
  2143.        returns a list of files containing <item> in their names.
  2144.   
  2145.   *Dir [<dir>]*
  2146.        returns a list of the files and directories in the given directory.
  2147.   
  2148.   *Send <file1> <file2> ... <fileN>*
  2149.        Tells the server to send the given files to you.
  2150.   
  2151.   *Begin*
  2152.        Tells the server to ignore all lines above this command.
  2153.   
  2154.   *End*
  2155.        Like Begin, but specifies to ignore the lines below. (A signature
  2156.        for example!) A typical session would be to send the following
  2157.   mail to the mail server:
  2158.        BEGIN
  2159.        CD /pub/aminet/util/arc
  2160.        SEND LhA_e138.run
  2161.        END
  2162.   
  2163.   8.5 Getting files from a mailbox
  2164.   ================================
  2165.   
  2166.      You also can get files from one of the many BBS's (`Bulletin Board
  2167.   System').  Most of these are driven by private users, so there is
  2168.   nearly everywhere a mailbox which doesn't cause a too expensive
  2169.   telephone bill.
  2170.   
  2171.      I want to publish a list of all Amiga mailboxes here.  So please
  2172.   send to me a list of all mailboxes which are related to the Amiga - in
  2173.   any way.  I need all telephone numbers of the boxes and their name.
  2174.   Tell me the nation where the box resides and - if possible - some more
  2175.   info (Does the box have Aminet or the Fish PD or FRAS?  Is the box
  2176.   especially for Amiga users?)
  2177.   
  2178.      Thanks, Ignaz Kellerer
  2179.   
  2180.   8.6 The Fish PD series
  2181.   ======================
  2182.   
  2183.      A very good source is the Fish PD series. One distinguishes between
  2184.   the floppy disks and the CD-Roms.
  2185.   
  2186.   8.6.1 The Amiga Library disks
  2187.   -----------------------------
  2188.   
  2189.      Fred Fish has started in the middle eighties to collect freely
  2190.   distributable software on floppy disks. There are 1000 disks and very
  2191.   much good stuff on it.  Most Amiga dealers sell them and most magazines
  2192.   contain addresses of people mailing them to you for about 3$ per disk
  2193.   or less.  Fred Fish has terminated offering software on floppy disks.
  2194.   Instead, there is a dealer who offers the new software from the CD-Roms
  2195.   on floppy disks.
  2196.   
  2197.      There are some things which can be found on the Fish disks, but not
  2198.   on Aminet.  However, you can get them with FTP. See Fish disk xxx.
  2199.   
  2200.   8.6.2 The Fresh Fish CD-Roms
  2201.   ----------------------------
  2202.   
  2203.      Fred Fish is going on to offer freely distributable software. But
  2204.   now he collects it on CD-Rom's. He releases two different kinds of CD's:
  2205.     1. Monthly released disks are divided into roughly three sections:
  2206.          1. New material, which includes the material from the new
  2207.             unreleased floppy disks as well as material which does not
  2208.             appear in the floppy distribution, about 84Mb on the first
  2209.             disk.
  2210.   
  2211.          2. Useful utilities that can be used directly off the CD-ROM if
  2212.             desired, thus freeing up the corresponding amount of hard
  2213.             disk space (GNU Emacs, Gnu C, GNU C++, Amiga E, PasTeX,
  2214.             AmigaGuide, Installer, 2.0 and 3.0-Includes, different
  2215.             archivers, tape drivers, the AmiCDROM filesystem and many
  2216.             other GNU and BSD tools, ...), about 150Mb on the first disk.
  2217.   
  2218.          3. Older material from previous released floppy disks or
  2219.             CD-ROM's, about 404 Mb on the first disk. (Fish disk 600-910)
  2220.   
  2221.     2. Disks containing the latest software as well as recent software in
  2222.        packed format only. (These are intended to be used for example in
  2223.        BBS's.)
  2224.           I recommend especially the first kind of Fish CD's. They cost
  2225.   about 20$ plus 3$ for shipping (5$ outside USA/Canada/Mexico) and are
  2226.   available from
  2227.   
  2228.        Amiga Library Services
  2229.        610 N. Alma School Road, Suite 18
  2230.        Chandler, AZ 85224-3687
  2231.        U.S.A.
  2232.        
  2233.        Phone/FAX: (602) 917-0917
  2234.   
  2235.   8.7 How do I Read and write MS-Dos disks?
  2236.   =========================================
  2237.   
  2238.      No problem for owners of Workbench 2.1 or higher: The program
  2239.   CrossDos is part of the Workbench. All you have to do is mounting the
  2240.   device `pc0:' by putting it into the drawer `Devs:DOSDrivers' or by
  2241.   double-clicking the icon in `Sys:Storage/DOSDrivers'. Ms-Dos disks in
  2242.   drive `df0:' can now be handled in the usual manner replacing the word
  2243.   `df0:' by `pc0:'. For example the directory can be shown with the
  2244.   command dir pc0:.
  2245.   
  2246.      People still running Workbench 2.0 or lower need a program called
  2247.   `MSH'.  You will find this on the Aminet (directory misc/emu) and on
  2248.   Fish disk 382.  See Sources. After editing the file `devs:MountList' as
  2249.   described in the documentation you have to say Mount msh: in the CLI
  2250.   and can now do the same as above replacing the word `pc0:' with `msh:'.
  2251.   
  2252.   8.8 How do I split large files?
  2253.   ===============================
  2254.   
  2255.      There are some archives which are too large to fit on one disk. To
  2256.   transfer them on disks you need to split them into smaller pieces and
  2257.   transfer each part on a separate disk. I recommend Martin Schlodder's
  2258.   `Splitter'.  (Aminet, `util/misc/splitter_121.lha'. The archive
  2259.   contains binaries for MS-DOS and should be compilable without problems
  2260.   on any Unix system.
  2261.   
  2262.   8.9 Discussing things
  2263.   =====================
  2264.   
  2265.      A mailing list is a server that allows to discuss special things via
  2266.   Email. The server holds a list of people that are interested in the
  2267.   respective topic. For example, the gcc mailing list will discuss bugs,
  2268.   new features and other problems of gcc. (see Compilers) If a mail is
  2269.   sent to the server from someone he will forward this mail to all the
  2270.   other people on the list.
  2271.   
  2272.      You will be added to the list by sending a mail to the server which
  2273.   will usually contain the word `Subscribe' or something similar. Once you
  2274.   are no more interested in the mailing list you can unsubscribe.
  2275.   
  2276.      Unforunately the servers have a different syntax of subscribing and
  2277.   unsubscribing. The best way to find how to subscribe is to send a mail
  2278.   with the word `Help' to the server. He will reply a mail which should
  2279.   explain how to handle this special server.
  2280.   
  2281.      Some mailing lists are:
  2282.        Topic           Server
  2283.        
  2284.        Amok            listserv@amokle.stgt.sub.org
  2285.        Dice            dice-request@castrov.cuc.ab.ca         or
  2286.                        dice-request@hactar.hanse.de (Germany)
  2287.        gcc             listserv@lists.funet.fi
  2288.        Lisp            amigalisp@contessa.phone.net
  2289.        Mui             mui-request@taloa.unice.fr
  2290.        Oberon-A        oberon-a-request@wossname.apana.org.au
  2291.   
  2292.   8.10 Other FAQ's
  2293.   ================
  2294.   
  2295.      This is not the only FAQ, of course. Lots of FAQ's are available
  2296.   either by being posted to newsgroups or by access via FTP.
  2297.   
  2298.   *Amiga related books FAQ*
  2299.        This is a list of books for the Amiga, including short discussions,
  2300.        prices and sources. Newsgroups: comp.sys.amiga.misc,
  2301.        comp.sys.amiga.introduction, comp.sys.amiga.programmer (monthly)
  2302.        Ftp: rtfm.mit.edu, pub/usenet/comp.sys.amiga.misc.  Maintainer:
  2303.        Marc Atkins, atkin@cs.umass.edu
  2304.   
  2305.   *AmiTCP/IP FAQ*
  2306.        This is for users of AmiTCP/IP, a set of programs which allows to
  2307.        include an Amiga into a TCP/IP network. (Most well known nets,
  2308.        Internet for example use TCP/IP.) Newsgroups: comp.sys.amiga.misc,
  2309.        comp.sys.amiga.datacomm, comp.sys.amiga.networking (biweekly) Ftp:
  2310.        rtfm.mit.edu, pub/usenet/comp.sys.amiga.networking Maintainer:
  2311.        Neil J. McRae (atcpfaq@domino.demon.co.uk)
  2312.   
  2313.   *Amiga Networking FAQ*
  2314.        Unlike the AmiTCP/IP FAQ this one wants to cover all aspects of
  2315.        networking, including TCP/IP and Envoy.  Newsgroups:
  2316.        comp.sys.amiga.datacomm, comp.sys.amiga.hardware Ftp:
  2317.        rtfm.mit.edu, pub/usenet/comp.sys.amiga.networking Maintainer:
  2318.        Richard Norman (norman@afas.msfc.nasa.gov)
  2319.   
  2320.   *Point Manager FAQ*
  2321.        Networking seems to be quite a problem: This FAQ os for Point
  2322.        Manager, a FidoNet-client (so-called points).  Newsgroups:
  2323.        comp.sys.amiga.datacomm Ftp: rtfm.mit.edu,
  2324.        pub/usenet/comp.sys.amiga.datacomm Maintainer: Eric Krieger
  2325.        (pm_faq@quasar.hacktic.nl)
  2326.   
  2327.   *All about FTP*
  2328.        Explains the usage of the file transfer program FTP. See FTP.
  2329.        Newsgroups: comp.sys.amiga.misc (monthly) Ftp: Aminet, info/start
  2330.        Betreuer: Urban Dominik Mueller (umueller@amiga.icu.net.ch)
  2331.   
  2332.   The Amiga-FAQ archive
  2333.   *********************
  2334.   
  2335.      The Amiga-FAQ is available in different formats: Ascii format (which
  2336.   is posted to the nets) AmigaGuide format (which is the adequate format
  2337.   on the Amiga) and in dvi format (to be printed). Additionally there is
  2338.   some stuff, that might be useful or interesting, but could not be
  2339.   included into the Amiga-FAQ:
  2340.        txt/amiga.history       On the Amiga's history
  2341.        txt/story.txt           The Commodore story (or: the Tramiel
  2342.                                story ;-)
  2343.        txt/amiga.newsgroups    Overview on comp.sys.amiga.*
  2344.        txt/amiga.sites         List of FTP sites
  2345.        txt/AmigaOverview.tex   A short overview on the Amiga-Soft- and
  2346.                                Hardware
  2347.        txt/Hardware.tips       For those people who can't live without solder
  2348.        src/JWSplit.c           The source of a file splitter
  2349.        src/JWJoin.c            The opponent to JWSplit
  2350.        src/addtoc.c            Utility to add a toc to texinfo-created docs
  2351.                                (this document uses it)
  2352.   
  2353.      I decided to collect these in the Amiga-FAQ archive. It is called
  2354.   AmigaFAQxxxxxx.lha (where xxxxxx is the date of the last release) and
  2355.   can be found on Aminet, directory `docs/misc'.
  2356.   
  2357.   Contributions
  2358.   *************
  2359.   
  2360.      This FAQ can neither get useful nor hit further development without
  2361.   your help. Suggestions, contributions, new answers, critics, anything
  2362.   is rather welcome.
  2363.   
  2364.      Please note, that very major subjects are absolutely missing yet:
  2365.   Nothing about sound, nothing on graphic cards, no Animation. These are
  2366.   some of the Amiga's best points! But I don't know them ... :-(
  2367.   
  2368.      So grab your keyboard (Your pencil? Well, if there's no other way...)
  2369.   and send mail to:
  2370.   
  2371.              Ignaz Kellerer
  2372.              Georg-Habel-Str. 11
  2373.        81241 Munich (Germany)
  2374.              Tel. (+49) 089 / 885147
  2375.        
  2376.              Internet: kellerer@informatik.tu-muenchen.de
  2377.   
  2378.   Credits
  2379.   *******
  2380.   
  2381.      My thanks go to:
  2382.   *Reinhard Spisser and Sebastiano Vigna*
  2383.        for the Amiga version of texinfo. This is written with it.
  2384.   
  2385.   *The Free Software Foundation*
  2386.        for the original version of texinfo and many other excellent
  2387.        programs.
  2388.   
  2389.   *Dylan McNamee*
  2390.        for contributing the sections on Editors, Word Processors, DTP and
  2391.        Postscript and some wording fixes.
  2392.   
  2393.   *Joseph Luk*
  2394.        for help in the section on chunky/planar, double buffering and
  2395.        PAL/NTSC
  2396.   
  2397.   *Urban Dominik Mueller*
  2398.        for the FAQ on FTP and Mail-servers.
  2399.   
  2400.   *Lars Hecking (lhecking@nmrc.ucc.ie)*
  2401.   *Philippe Brand (phb@colombo.telesys-innov.fr)*
  2402.        for the complete gcc part
  2403.   
  2404.   *Jochen Wiedmann (zrawi01@decap2.zdv.uni-tuebingen.de)*
  2405.        for the composition and posting of the Amiga FAQ until July 1994.
  2406.   
  2407.   Index
  2408.   *****
  2409.   
  2410.   
  2411.   
  2412.    . (replacement)                        Dot-Replacement
  2413.    .arj                                   Endings
  2414.    .dms                                   Endings
  2415.    .gz                                    Endings
  2416.    .lha                                   Endings
  2417.    .lzh                                   Endings
  2418.    .netrc                                 FTP
  2419.    .sfx                                   Endings
  2420.    .tar                                   Endings
  2421.    .z                                     Endings
  2422.    .Z                                     Endings
  2423.    .zip                                   Endings
  2424.    .zom                                   Endings
  2425.    .zoo                                   Endings
  2426.    68EC020                                68EC0xx
  2427.    68EC030                                68EC0xx
  2428.    68LC040                                68EC0xx
  2429.    A1200 (HD)                             A1200-HD
  2430.    AmiBooksFAQ                            FAQs
  2431.    Amiga Library disks                    Fish floppy disks
  2432.    Amiga networking FAQ                   FAQs
  2433.    Amiga-FAQ archive                      Amiga-FAQ Archive
  2434.    AmigaBasic                             AmigaBasic
  2435.    AmigaSciSchool                         Infos
  2436.    AmiTCP/IP FAQ                          FAQs
  2437.    Anonymous                              FTP
  2438.    Assemblers                             Compilers
  2439.    AutoDocs                               Includes
  2440.    BBS                                    Mailbox
  2441.    C                                      Compilers
  2442.    C++                                    Compilers
  2443.    Catalog description                    Localizing
  2444.    Catalog translation                    Localizing
  2445.    Catalogs                               Localizing
  2446.    CatComp                                Localizing
  2447.    CATS                                   CATS
  2448.    Chunky displays                        Chunky vs. Planar
  2449.    Commodore, Frankfurt                   Developer
  2450.    Commodore, West Chester                CATS
  2451.    comp.sys.amiga.reviews                 Reviews
  2452.    Compilers                              Compilers
  2453.    Console window                         WindowPtr
  2454.    Contributions                          Contributions
  2455.    Credits                                Credits
  2456.    CrossDos                               MS-Dos disks
  2457.    Current directory                      Dot-Replacement
  2458.    DaggeX                                 X11
  2459.    Desktop Publishing                     DTP
  2460.    Developer                              Developer
  2461.    DoMethod                               Missing functions
  2462.    DoSuperMethod                          Missing functions
  2463.    Doublebuffering                        Doublebuffering
  2464.    DTP                                    DTP
  2465.    Editors                                Editors
  2466.    Emulators                              Emulators
  2467.    endings                                Endings
  2468.    Enforcer                               68EC0xx
  2469.    Esc sequences                          Printer control
  2470.    FAQ's, others                          FAQs
  2471.    FD-files                               Pragmas
  2472.    fd2pragma                              Pragmas
  2473.    file endings                           Endings
  2474.    Fish CD-Rom                            Fish CD
  2475.    Fish disks                             Fish disk xxx
  2476.    Fish floppy disks                      Fish floppy disks
  2477.    Fish PD                                Fish
  2478.    FishCon                                Infos
  2479.    FishXref                               Infos
  2480.    FlexCat                                Localizing
  2481.    Forth                                  Compilers
  2482.    Fortran                                Compilers
  2483.    FPU                                    FPU
  2484.    Fresh Fish CD-Rom                      Fish CD
  2485.    FTP servers                            FTP
  2486.    GadTools                               MUI
  2487.    Gcc                                    The GNU C compiler
  2488.    gcc-amiga-libraries                    Amiga Libraries
  2489.    gcc-authors                            Authors
  2490.    gcc-current                            Current Version
  2491.    gcc-how-to-get-help                    How to get help
  2492.    gcc-inline-headers                     Inline Headers
  2493.    gcc-installation                       Installation
  2494.    gcc-requirements                       Requirements
  2495.    gcc-sources                            Sources for Gcc
  2496.    GfxBase                                X11
  2497.    GigaMem                                68EC0xx
  2498.    Graphics                               Graphics
  2499.    HD (A1200)                             A1200-HD
  2500.    HD compression                         HD-Compression
  2501.    Hirsch & Wolf                          CATS
  2502.    history                                Amiga-FAQ Archive
  2503.    HookEntry                              Missing functions
  2504.    Includes                               Includes
  2505.    KingFisher                             Infos
  2506.    KitCat                                 Localizing
  2507.    LibAllocPooled                         Missing functions
  2508.    Linux                                  Unix
  2509.    Lisp                                   Compilers
  2510.    locale.library                         Localizing
  2511.    Localizing                             Localizing
  2512.    Mail-server                            Mail
  2513.    mailbox                                Mailbox
  2514.    Mailing lists                          Mailing lists
  2515.    MakeCat                                Localizing
  2516.    Memory, virtual                        68EC0xx
  2517.    Missing functions                      Missing functions
  2518.    MMU                                    68EC0xx
  2519.    Modula-2                               Compilers
  2520.    Monitors                               Monitors
  2521.    MS-Dos disks                           MS-Dos disks
  2522.    Msh                                    MS-Dos disks
  2523.    MUI                                    MUI
  2524.    Multiscan                              Monitors
  2525.    NDA                                    Developer
  2526.    NDK                                    Includes
  2527.    NDU                                    Includes
  2528.    NDUK                                   Includes
  2529.    NetBSD                                 Unix
  2530.    NTSC                                   PAL-NTSC
  2531.    Oberon                                 Compilers
  2532.    Oberon-A                               Compilers
  2533.    packers                                Endings
  2534.    packers on Unix                        Endings
  2535.    Page Layout Languages                  Word Processors
  2536.    PAL                                    PAL-NTSC
  2537.    Pascal                                 Compilers
  2538.    Pipe (command)                         Pipe command
  2539.    PIPE:                                  Pipe
  2540.    Planar displays                        Chunky vs. Planar
  2541.    Point manager FAQ                      FAQs
  2542.    Postscript                             Postscript
  2543.    pragmas                                Pragmas
  2544.    Printer control                        Printer control
  2545.    Prolog                                 Compilers
  2546.    Queue-handler                          Pipe
  2547.    Reviews                                Reviews
  2548.    RKMs                                   Manuals
  2549.    Rom Kernel manuals                     Manuals
  2550.    Splitting files                        Splitting
  2551.    Stacker                                HD-Compression
  2552.    TeX                                    TeX
  2553.    Text Editors                           Editors
  2554.    Unix                                   Unix
  2555.    Unix-LhA                               Unix-LhA
  2556.    VGA                                    Monitors
  2557.    Word Processors                        Word Processors
  2558.    Wysiwyg                                Word Processors
  2559.    X11                                    X11
  2560.    XFH                                    HD-Compression
  2561.    XPK                                    HD-Compression
  2562.    _mchar                                 _mchar
  2563.    _pchar                                 Pipe command
  2564.   
  2565.